Skip to content

Repository files navigation

Authoring

Authoring is the shared Go module for product-neutral authoring orchestration used by OpenUdon and Ramen.

It owns generic sessions, transcripts, prompt/replay helpers, draft lifecycle persistence, structured JSON fallback, dependency-aware interview graphs, frontier-round iCoT loops, readiness/question planning, decision evidence, report metadata, scorecard records, and prompt-safe context shapes.

It does not own OpenUdon workflow package semantics, Ramen desired-state semantics, UWS document semantics, API-source parsing, credential resolution, model-provider clients, live execution, governance, state, or reconciliation.

Packages

  • trust: Evidence-backed diagnostic, artifact, digest, and redaction names.
  • session: durable prompt session state and answers.
  • transcript: transcript turns, events, diagnostics, artifacts, and model provenance.
  • prompt: local prompting, default modes, replay scripts, and prompt transcripts.
  • lifecycle: draft envelopes, atomic writes, autosave, and artifact helpers.
  • structured: provider-neutral structured JSON completion and legacy JSON fallback.
  • icot: generic progressive and interactive iCoT loops, interview bindings, lifecycle hooks, semantic progress detection, and bound-runtime interfaces.
  • interview: authoring.interview.v1 dependency graphs, unified evidence, answers, deferrals, atomic frontier settlement, validation, status transitions, and ready frontiers.
  • icotcli: shared iCoT CLI flag plumbing and prompt/model label helpers.
  • readiness: readiness summaries, blocking/warning sorting, and question planning.
  • decision: decision evidence, confidence behavior, and confirmation policy.
  • report: agent result contracts, report metadata, scorecards, and variants.
  • promptcontext: authoring.prompt-context.v2 source documents, operations, schema hints, and symbolic OR-of-AND credential binding alternatives.

Boundary

Authoring is intentionally upstream of products. It imports Evidence for neutral trust primitives and must not import OpenUdon, Ramen, UWS, or API-source packages. Downstream adapters translate product metadata into Authoring contracts and own product prompts, validation, artifacts, credentials, model clients, execution, and state. API operation lifecycle ranking belongs to github.com/OpenUdon/apitools/operationlifecycle, where it consumes apitools.OperationSummary and source provenance directly.

Default tests and examples use fake runtimes and fake clients only. They do not require credentials, model providers, API calls, workflow execution, Terraform/OpenTofu execution, or trusted-runner access.

Downstream Use Cases

Authoring is shared loop infrastructure, not a product CLI. OpenUdon and Ramen use it for different authoring jobs:

  • OpenUdon iCoT starts from workflow automation intent. Its downstream adapter may guide catalog/API artifact selection or retrieval, then writes OpenUdon workflow authoring artifacts such as project.md, workflows/intent.hcl, review/eval reports, and package-oriented files. This path is oriented toward general workflow authors who may need more guidance from a goal to API artifact selection.
  • Ramen iCoT starts from desired-state infrastructure intent plus explicit local API source metadata, such as OpenAPI, Smithy, or Discovery documents. Its downstream adapter writes native Ramen/UWS desired-state projects such as project.uws.yaml, then can run Ramen validation, graph, and static plan gates before any trusted executor boundary. This path is oriented toward enterprise IaC users who are expected to know the target API source category and want controlled validation, planning, state, approval, and apply semantics.
  • Ramen conversion is separate from iCoT. It converts existing Terraform/OpenTofu configuration plus explicit local API source metadata into native Ramen/UWS review artifacts.

The practical distinction is that workflow authoring can be exploratory, while IaC authoring should make the target API source category explicit. Authoring supports the shared prompting, transcript, readiness, decision, and report mechanics for both, but source discovery, provider mappings, generated artifact formats, state, approval, and execution remain downstream responsibilities. Ramen should not import OpenUdon workflow packages or expose a generic from-openudon/import openudon path; the use cases and product semantics are intentionally different.

Shared Context

The two iCoT adapters share generic Authoring context and loop mechanics:

  • prompt sessions, default modes, answer replay, and transcript records
  • dependency-ready frontier rounds, one normalization/autosave after applying each complete answer set, atomic interview settlement, semantic progress fingerprints, a configurable emergency round fuse, three-round no-progress diagnosis, and final confirmation flow
  • readiness issue and interactive question shapes with one forced flag, one recommendation, priority, concise rationale, and evidence references
  • decision evidence normalization and confirmation policy
  • prompt-safe source, operation, schema, and credential-alternative context records
  • agent result, diagnostic, artifact, metadata, and scorecard report shapes
  • common CLI flags for prompt mode, no-LLM, model labels, answers, reports, and transcripts

The downstream adapters provide the product hooks that make those records mean something. OpenUdon binds workflow intent, catalog retrieval, request mapping, flow review, and package artifacts. Ramen binds API-source translation, desired-state resources, validation, graph, static plan, state, approval, and trusted execution boundaries.

OpenUdon iCoT

OpenUdon exposes its workflow-authoring loop from the downstream checkout:

(cd ../openudon && go run ./cmd/icot --example examples/<name>)
(cd ../openudon && go run ./cmd/openudon build --example examples/<name>)

The iCoT command writes the human/project brief and structured intent. The downstream openudon build command then deterministically regenerates the public workflow artifacts, review evidence, and quality reports from workflows/intent.hcl.

Common downstream options:

OptionPurpose
--example DIR / --dir DIRExample directory to create or update.
--from-example DIRSeed answers from an existing example.
--answers PATHReplay a YAML or JSON session/answers file.
--force / --yesOverwrite existing files, optionally without prompts.
--printRender without writing files.
--agentReturn needs_input instead of prompting when incomplete.
--no-llmDisable optional model extraction assistance.
--provider, --model, --temperatureDownstream model configuration.
--prompt-mode full|normal|fastControl defaulted question behavior.
--json, --report PATHEmit or save a structured report.

Typical downstream output files and directories:

project.md
workflows/intent.hcl
workflows/workflow.hcl
workflows/workflow.uws.yaml
openapi/
workflows/
expected/
expected/plan.json
expected/review.md
expected/review-handoff.json
expected/quality.json
.icot/

OpenUdon also owns related downstream subcommands such as build, reconcile, lint, repair, scorecard, variants, replay-eval, authoring-eval, and report verify.

Ramen iCoT

Ramen exposes a desired-state authoring path from the downstream checkout:

(cd ../ramen && go run ./cmd/ramen icot \
--goal "Create an Azure Cosmos DB account" \
--api-source openapi:azure-cosmos=/abs/path/azure-cosmos.json \
--out .ramen/icot/azure-cosmos \
--validate \
--graph \
--plan)

Common downstream options:

OptionPurpose
--goal TEXTDesired-state project goal.
--api-source KIND:ID=PATHRepeatable local API source input.
--project-name NAMEOptional generated project name.
--out DIROutput directory for project.uws.yaml.
--validate, --graph, --planRun non-executing Ramen gates after drafting.
--state PATHSQLite state path for the static plan gate.
--answers PATHReplay answers/session JSON.
--agentRun noninteractively and return needs_input when incomplete.
--no-llmDisable optional model assistance.
--provider, --model, --temperatureDownstream model configuration.
--prompt-mode full|normal|fastControl defaulted question behavior.
--json, --report PATHEmit or save a structured report.
--no-transcriptDisable transcript persistence.

Typical downstream output files:

.ramen/icot/project.uws.yaml
.ramen/icot/<optional transcript/report files>

When requested, validation, graph, and plan results are returned in the command result. They do not execute API operations or trusted executor actions.

Ramen Convert

Ramen conversion is not an iCoT loop. It converts existing Terraform/OpenTofu configuration plus explicit local API source metadata:

(cd ../ramen && go run ./cmd/ramen convert \
--config-dir ./tf \
--api-source openapi:azure-cosmos=/abs/path/azure-cosmos.json \
--action create \
--out .ramen/convert/azure-cosmos)

Common downstream options:

OptionPurpose
--config-dir DIRTerraform/OpenTofu configuration directory.
--api-source KIND:ID=PATHRepeatable local API source input.
--openapi ID=PATHOpenAPI shorthand for --api-source openapi:ID=PATH.
--action create|update|delete|replaceRequired for managed resources.
--target ADDRESSRepeatable Terraform address filter.
--out DIROutput directory for review artifacts.
--strictFail when strict-failure diagnostics remain.

Typical downstream output files:

.ramen/convert/project.md
.ramen/convert/project.uws.yaml
.ramen/convert/project.uws.hcl
.ramen/convert/workflows/workflow.uws.yaml
.ramen/convert/workflows/workflow.uws.hcl
.ramen/convert/expected/conversion.json
.ramen/convert/expected/mappings.json
.ramen/convert/expected/diagnostics.json
.ramen/convert/expected/diagnostics.md
.ramen/convert/expected/plan.json
.ramen/convert/expected/plan.md
.ramen/convert/expected/review.md

Compatibility

Authoring is pre-1.0. Versioned durable records use authoring.*.v1 constants, but exported APIs may still change while OpenUdon and Ramen adoption settles. See COMPATIBILITY.md for the current policy and migration expectations.

Examples

Runnable examples in examples_test.go cover manual prompting, agent-style result/digest records, structured JSON fallback with a fake client, and a progressive loop with a fake runtime.

Checks

go test ./...
go vet ./...
git diff --check

From the Authoring checkout inside the parent workspace, run the cross-repo gate:

./scripts/check-compat.sh

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - OpenUdon/authoring · GitHub
Skip to content

Repository files navigation

Authoring

Authoring is the shared Go module for product-neutral authoring orchestration used by OpenUdon and Ramen.

It owns generic sessions, transcripts, prompt/replay helpers, draft lifecycle persistence, structured JSON fallback, dependency-aware interview graphs, frontier-round iCoT loops, readiness/question planning, decision evidence, report metadata, scorecard records, and prompt-safe context shapes.

It does not own OpenUdon workflow package semantics, Ramen desired-state semantics, UWS document semantics, API-source parsing, credential resolution, model-provider clients, live execution, governance, state, or reconciliation.

Packages

  • trust: Evidence-backed diagnostic, artifact, digest, and redaction names.
  • session: durable prompt session state and answers.
  • transcript: transcript turns, events, diagnostics, artifacts, and model provenance.
  • prompt: local prompting, default modes, replay scripts, and prompt transcripts.
  • lifecycle: draft envelopes, atomic writes, autosave, and artifact helpers.
  • structured: provider-neutral structured JSON completion and legacy JSON fallback.
  • icot: generic progressive and interactive iCoT loops, interview bindings, lifecycle hooks, semantic progress detection, and bound-runtime interfaces.
  • interview: authoring.interview.v1 dependency graphs, unified evidence, answers, deferrals, atomic frontier settlement, validation, status transitions, and ready frontiers.
  • icotcli: shared iCoT CLI flag plumbing and prompt/model label helpers.
  • readiness: readiness summaries, blocking/warning sorting, and question planning.
  • decision: decision evidence, confidence behavior, and confirmation policy.
  • report: agent result contracts, report metadata, scorecards, and variants.
  • promptcontext: authoring.prompt-context.v2 source documents, operations, schema hints, and symbolic OR-of-AND credential binding alternatives.

Boundary

Authoring is intentionally upstream of products. It imports Evidence for neutral trust primitives and must not import OpenUdon, Ramen, UWS, or API-source packages. Downstream adapters translate product metadata into Authoring contracts and own product prompts, validation, artifacts, credentials, model clients, execution, and state. API operation lifecycle ranking belongs to github.com/OpenUdon/apitools/operationlifecycle, where it consumes apitools.OperationSummary and source provenance directly.

Default tests and examples use fake runtimes and fake clients only. They do not require credentials, model providers, API calls, workflow execution, Terraform/OpenTofu execution, or trusted-runner access.

Downstream Use Cases

Authoring is shared loop infrastructure, not a product CLI. OpenUdon and Ramen use it for different authoring jobs:

  • OpenUdon iCoT starts from workflow automation intent. Its downstream adapter may guide catalog/API artifact selection or retrieval, then writes OpenUdon workflow authoring artifacts such as project.md, workflows/intent.hcl, review/eval reports, and package-oriented files. This path is oriented toward general workflow authors who may need more guidance from a goal to API artifact selection.
  • Ramen iCoT starts from desired-state infrastructure intent plus explicit local API source metadata, such as OpenAPI, Smithy, or Discovery documents. Its downstream adapter writes native Ramen/UWS desired-state projects such as project.uws.yaml, then can run Ramen validation, graph, and static plan gates before any trusted executor boundary. This path is oriented toward enterprise IaC users who are expected to know the target API source category and want controlled validation, planning, state, approval, and apply semantics.
  • Ramen conversion is separate from iCoT. It converts existing Terraform/OpenTofu configuration plus explicit local API source metadata into native Ramen/UWS review artifacts.

The practical distinction is that workflow authoring can be exploratory, while IaC authoring should make the target API source category explicit. Authoring supports the shared prompting, transcript, readiness, decision, and report mechanics for both, but source discovery, provider mappings, generated artifact formats, state, approval, and execution remain downstream responsibilities. Ramen should not import OpenUdon workflow packages or expose a generic from-openudon/import openudon path; the use cases and product semantics are intentionally different.

Shared Context

The two iCoT adapters share generic Authoring context and loop mechanics:

  • prompt sessions, default modes, answer replay, and transcript records
  • dependency-ready frontier rounds, one normalization/autosave after applying each complete answer set, atomic interview settlement, semantic progress fingerprints, a configurable emergency round fuse, three-round no-progress diagnosis, and final confirmation flow
  • readiness issue and interactive question shapes with one forced flag, one recommendation, priority, concise rationale, and evidence references
  • decision evidence normalization and confirmation policy
  • prompt-safe source, operation, schema, and credential-alternative context records
  • agent result, diagnostic, artifact, metadata, and scorecard report shapes
  • common CLI flags for prompt mode, no-LLM, model labels, answers, reports, and transcripts

The downstream adapters provide the product hooks that make those records mean something. OpenUdon binds workflow intent, catalog retrieval, request mapping, flow review, and package artifacts. Ramen binds API-source translation, desired-state resources, validation, graph, static plan, state, approval, and trusted execution boundaries.

OpenUdon iCoT

OpenUdon exposes its workflow-authoring loop from the downstream checkout:

(cd ../openudon && go run ./cmd/icot --example examples/<name>)
(cd ../openudon && go run ./cmd/openudon build --example examples/<name>)

The iCoT command writes the human/project brief and structured intent. The downstream openudon build command then deterministically regenerates the public workflow artifacts, review evidence, and quality reports from workflows/intent.hcl.

Common downstream options:

OptionPurpose
--example DIR / --dir DIRExample directory to create or update.
--from-example DIRSeed answers from an existing example.
--answers PATHReplay a YAML or JSON session/answers file.
--force / --yesOverwrite existing files, optionally without prompts.
--printRender without writing files.
--agentReturn needs_input instead of prompting when incomplete.
--no-llmDisable optional model extraction assistance.
--provider, --model, --temperatureDownstream model configuration.
--prompt-mode full|normal|fastControl defaulted question behavior.
--json, --report PATHEmit or save a structured report.

Typical downstream output files and directories:

project.md
workflows/intent.hcl
workflows/workflow.hcl
workflows/workflow.uws.yaml
openapi/
workflows/
expected/
expected/plan.json
expected/review.md
expected/review-handoff.json
expected/quality.json
.icot/

OpenUdon also owns related downstream subcommands such as build, reconcile, lint, repair, scorecard, variants, replay-eval, authoring-eval, and report verify.

Ramen iCoT

Ramen exposes a desired-state authoring path from the downstream checkout:

(cd ../ramen && go run ./cmd/ramen icot \
--goal "Create an Azure Cosmos DB account" \
--api-source openapi:azure-cosmos=/abs/path/azure-cosmos.json \
--out .ramen/icot/azure-cosmos \
--validate \
--graph \
--plan)

Common downstream options:

OptionPurpose
--goal TEXTDesired-state project goal.
--api-source KIND:ID=PATHRepeatable local API source input.
--project-name NAMEOptional generated project name.
--out DIROutput directory for project.uws.yaml.
--validate, --graph, --planRun non-executing Ramen gates after drafting.
--state PATHSQLite state path for the static plan gate.
--answers PATHReplay answers/session JSON.
--agentRun noninteractively and return needs_input when incomplete.
--no-llmDisable optional model assistance.
--provider, --model, --temperatureDownstream model configuration.
--prompt-mode full|normal|fastControl defaulted question behavior.
--json, --report PATHEmit or save a structured report.
--no-transcriptDisable transcript persistence.

Typical downstream output files:

.ramen/icot/project.uws.yaml
.ramen/icot/<optional transcript/report files>

When requested, validation, graph, and plan results are returned in the command result. They do not execute API operations or trusted executor actions.

Ramen Convert

Ramen conversion is not an iCoT loop. It converts existing Terraform/OpenTofu configuration plus explicit local API source metadata:

(cd ../ramen && go run ./cmd/ramen convert \
--config-dir ./tf \
--api-source openapi:azure-cosmos=/abs/path/azure-cosmos.json \
--action create \
--out .ramen/convert/azure-cosmos)

Common downstream options:

OptionPurpose
--config-dir DIRTerraform/OpenTofu configuration directory.
--api-source KIND:ID=PATHRepeatable local API source input.
--openapi ID=PATHOpenAPI shorthand for --api-source openapi:ID=PATH.
--action create|update|delete|replaceRequired for managed resources.
--target ADDRESSRepeatable Terraform address filter.
--out DIROutput directory for review artifacts.
--strictFail when strict-failure diagnostics remain.

Typical downstream output files:

.ramen/convert/project.md
.ramen/convert/project.uws.yaml
.ramen/convert/project.uws.hcl
.ramen/convert/workflows/workflow.uws.yaml
.ramen/convert/workflows/workflow.uws.hcl
.ramen/convert/expected/conversion.json
.ramen/convert/expected/mappings.json
.ramen/convert/expected/diagnostics.json
.ramen/convert/expected/diagnostics.md
.ramen/convert/expected/plan.json
.ramen/convert/expected/plan.md
.ramen/convert/expected/review.md

Compatibility

Authoring is pre-1.0. Versioned durable records use authoring.*.v1 constants, but exported APIs may still change while OpenUdon and Ramen adoption settles. See COMPATIBILITY.md for the current policy and migration expectations.

Examples

Runnable examples in examples_test.go cover manual prompting, agent-style result/digest records, structured JSON fallback with a fake client, and a progressive loop with a fake runtime.

Checks

go test ./...
go vet ./...
git diff --check

From the Authoring checkout inside the parent workspace, run the cross-repo gate:

./scripts/check-compat.sh

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - OpenUdon/authoring · GitHub
Skip to content

Repository files navigation

Authoring

Authoring is the shared Go module for product-neutral authoring orchestration used by OpenUdon and Ramen.

It owns generic sessions, transcripts, prompt/replay helpers, draft lifecycle persistence, structured JSON fallback, dependency-aware interview graphs, frontier-round iCoT loops, readiness/question planning, decision evidence, report metadata, scorecard records, and prompt-safe context shapes.

It does not own OpenUdon workflow package semantics, Ramen desired-state semantics, UWS document semantics, API-source parsing, credential resolution, model-provider clients, live execution, governance, state, or reconciliation.

Packages

  • trust: Evidence-backed diagnostic, artifact, digest, and redaction names.
  • session: durable prompt session state and answers.
  • transcript: transcript turns, events, diagnostics, artifacts, and model provenance.
  • prompt: local prompting, default modes, replay scripts, and prompt transcripts.
  • lifecycle: draft envelopes, atomic writes, autosave, and artifact helpers.
  • structured: provider-neutral structured JSON completion and legacy JSON fallback.
  • icot: generic progressive and interactive iCoT loops, interview bindings, lifecycle hooks, semantic progress detection, and bound-runtime interfaces.
  • interview: authoring.interview.v1 dependency graphs, unified evidence, answers, deferrals, atomic frontier settlement, validation, status transitions, and ready frontiers.
  • icotcli: shared iCoT CLI flag plumbing and prompt/model label helpers.
  • readiness: readiness summaries, blocking/warning sorting, and question planning.
  • decision: decision evidence, confidence behavior, and confirmation policy.
  • report: agent result contracts, report metadata, scorecards, and variants.
  • promptcontext: authoring.prompt-context.v2 source documents, operations, schema hints, and symbolic OR-of-AND credential binding alternatives.

Boundary

Authoring is intentionally upstream of products. It imports Evidence for neutral trust primitives and must not import OpenUdon, Ramen, UWS, or API-source packages. Downstream adapters translate product metadata into Authoring contracts and own product prompts, validation, artifacts, credentials, model clients, execution, and state. API operation lifecycle ranking belongs to github.com/OpenUdon/apitools/operationlifecycle, where it consumes apitools.OperationSummary and source provenance directly.

Default tests and examples use fake runtimes and fake clients only. They do not require credentials, model providers, API calls, workflow execution, Terraform/OpenTofu execution, or trusted-runner access.

Downstream Use Cases

Authoring is shared loop infrastructure, not a product CLI. OpenUdon and Ramen use it for different authoring jobs:

  • OpenUdon iCoT starts from workflow automation intent. Its downstream adapter may guide catalog/API artifact selection or retrieval, then writes OpenUdon workflow authoring artifacts such as project.md, workflows/intent.hcl, review/eval reports, and package-oriented files. This path is oriented toward general workflow authors who may need more guidance from a goal to API artifact selection.
  • Ramen iCoT starts from desired-state infrastructure intent plus explicit local API source metadata, such as OpenAPI, Smithy, or Discovery documents. Its downstream adapter writes native Ramen/UWS desired-state projects such as project.uws.yaml, then can run Ramen validation, graph, and static plan gates before any trusted executor boundary. This path is oriented toward enterprise IaC users who are expected to know the target API source category and want controlled validation, planning, state, approval, and apply semantics.
  • Ramen conversion is separate from iCoT. It converts existing Terraform/OpenTofu configuration plus explicit local API source metadata into native Ramen/UWS review artifacts.

The practical distinction is that workflow authoring can be exploratory, while IaC authoring should make the target API source category explicit. Authoring supports the shared prompting, transcript, readiness, decision, and report mechanics for both, but source discovery, provider mappings, generated artifact formats, state, approval, and execution remain downstream responsibilities. Ramen should not import OpenUdon workflow packages or expose a generic from-openudon/import openudon path; the use cases and product semantics are intentionally different.

Shared Context

The two iCoT adapters share generic Authoring context and loop mechanics:

  • prompt sessions, default modes, answer replay, and transcript records
  • dependency-ready frontier rounds, one normalization/autosave after applying each complete answer set, atomic interview settlement, semantic progress fingerprints, a configurable emergency round fuse, three-round no-progress diagnosis, and final confirmation flow
  • readiness issue and interactive question shapes with one forced flag, one recommendation, priority, concise rationale, and evidence references
  • decision evidence normalization and confirmation policy
  • prompt-safe source, operation, schema, and credential-alternative context records
  • agent result, diagnostic, artifact, metadata, and scorecard report shapes
  • common CLI flags for prompt mode, no-LLM, model labels, answers, reports, and transcripts

The downstream adapters provide the product hooks that make those records mean something. OpenUdon binds workflow intent, catalog retrieval, request mapping, flow review, and package artifacts. Ramen binds API-source translation, desired-state resources, validation, graph, static plan, state, approval, and trusted execution boundaries.

OpenUdon iCoT

OpenUdon exposes its workflow-authoring loop from the downstream checkout:

(cd ../openudon && go run ./cmd/icot --example examples/<name>)
(cd ../openudon && go run ./cmd/openudon build --example examples/<name>)

The iCoT command writes the human/project brief and structured intent. The downstream openudon build command then deterministically regenerates the public workflow artifacts, review evidence, and quality reports from workflows/intent.hcl.

Common downstream options:

OptionPurpose
--example DIR / --dir DIRExample directory to create or update.
--from-example DIRSeed answers from an existing example.
--answers PATHReplay a YAML or JSON session/answers file.
--force / --yesOverwrite existing files, optionally without prompts.
--printRender without writing files.
--agentReturn needs_input instead of prompting when incomplete.
--no-llmDisable optional model extraction assistance.
--provider, --model, --temperatureDownstream model configuration.
--prompt-mode full|normal|fastControl defaulted question behavior.
--json, --report PATHEmit or save a structured report.

Typical downstream output files and directories:

project.md
workflows/intent.hcl
workflows/workflow.hcl
workflows/workflow.uws.yaml
openapi/
workflows/
expected/
expected/plan.json
expected/review.md
expected/review-handoff.json
expected/quality.json
.icot/

OpenUdon also owns related downstream subcommands such as build, reconcile, lint, repair, scorecard, variants, replay-eval, authoring-eval, and report verify.

Ramen iCoT

Ramen exposes a desired-state authoring path from the downstream checkout:

(cd ../ramen && go run ./cmd/ramen icot \
--goal "Create an Azure Cosmos DB account" \
--api-source openapi:azure-cosmos=/abs/path/azure-cosmos.json \
--out .ramen/icot/azure-cosmos \
--validate \
--graph \
--plan)

Common downstream options:

OptionPurpose
--goal TEXTDesired-state project goal.
--api-source KIND:ID=PATHRepeatable local API source input.
--project-name NAMEOptional generated project name.
--out DIROutput directory for project.uws.yaml.
--validate, --graph, --planRun non-executing Ramen gates after drafting.
--state PATHSQLite state path for the static plan gate.
--answers PATHReplay answers/session JSON.
--agentRun noninteractively and return needs_input when incomplete.
--no-llmDisable optional model assistance.
--provider, --model, --temperatureDownstream model configuration.
--prompt-mode full|normal|fastControl defaulted question behavior.
--json, --report PATHEmit or save a structured report.
--no-transcriptDisable transcript persistence.

Typical downstream output files:

.ramen/icot/project.uws.yaml
.ramen/icot/<optional transcript/report files>

When requested, validation, graph, and plan results are returned in the command result. They do not execute API operations or trusted executor actions.

Ramen Convert

Ramen conversion is not an iCoT loop. It converts existing Terraform/OpenTofu configuration plus explicit local API source metadata:

(cd ../ramen && go run ./cmd/ramen convert \
--config-dir ./tf \
--api-source openapi:azure-cosmos=/abs/path/azure-cosmos.json \
--action create \
--out .ramen/convert/azure-cosmos)

Common downstream options:

OptionPurpose
--config-dir DIRTerraform/OpenTofu configuration directory.
--api-source KIND:ID=PATHRepeatable local API source input.
--openapi ID=PATHOpenAPI shorthand for --api-source openapi:ID=PATH.
--action create|update|delete|replaceRequired for managed resources.
--target ADDRESSRepeatable Terraform address filter.
--out DIROutput directory for review artifacts.
--strictFail when strict-failure diagnostics remain.

Typical downstream output files:

.ramen/convert/project.md
.ramen/convert/project.uws.yaml
.ramen/convert/project.uws.hcl
.ramen/convert/workflows/workflow.uws.yaml
.ramen/convert/workflows/workflow.uws.hcl
.ramen/convert/expected/conversion.json
.ramen/convert/expected/mappings.json
.ramen/convert/expected/diagnostics.json
.ramen/convert/expected/diagnostics.md
.ramen/convert/expected/plan.json
.ramen/convert/expected/plan.md
.ramen/convert/expected/review.md

Compatibility

Authoring is pre-1.0. Versioned durable records use authoring.*.v1 constants, but exported APIs may still change while OpenUdon and Ramen adoption settles. See COMPATIBILITY.md for the current policy and migration expectations.

Examples

Runnable examples in examples_test.go cover manual prompting, agent-style result/digest records, structured JSON fallback with a fake client, and a progressive loop with a fake runtime.

Checks

go test ./...
go vet ./...
git diff --check

From the Authoring checkout inside the parent workspace, run the cross-repo gate:

./scripts/check-compat.sh

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - OpenUdon/authoring · GitHub
Skip to content

Repository files navigation

Authoring

Authoring is the shared Go module for product-neutral authoring orchestration used by OpenUdon and Ramen.

It owns generic sessions, transcripts, prompt/replay helpers, draft lifecycle persistence, structured JSON fallback, dependency-aware interview graphs, frontier-round iCoT loops, readiness/question planning, decision evidence, report metadata, scorecard records, and prompt-safe context shapes.

It does not own OpenUdon workflow package semantics, Ramen desired-state semantics, UWS document semantics, API-source parsing, credential resolution, model-provider clients, live execution, governance, state, or reconciliation.

Packages

  • trust: Evidence-backed diagnostic, artifact, digest, and redaction names.
  • session: durable prompt session state and answers.
  • transcript: transcript turns, events, diagnostics, artifacts, and model provenance.
  • prompt: local prompting, default modes, replay scripts, and prompt transcripts.
  • lifecycle: draft envelopes, atomic writes, autosave, and artifact helpers.
  • structured: provider-neutral structured JSON completion and legacy JSON fallback.
  • icot: generic progressive and interactive iCoT loops, interview bindings, lifecycle hooks, semantic progress detection, and bound-runtime interfaces.
  • interview: authoring.interview.v1 dependency graphs, unified evidence, answers, deferrals, atomic frontier settlement, validation, status transitions, and ready frontiers.
  • icotcli: shared iCoT CLI flag plumbing and prompt/model label helpers.
  • readiness: readiness summaries, blocking/warning sorting, and question planning.
  • decision: decision evidence, confidence behavior, and confirmation policy.
  • report: agent result contracts, report metadata, scorecards, and variants.
  • promptcontext: authoring.prompt-context.v2 source documents, operations, schema hints, and symbolic OR-of-AND credential binding alternatives.

Boundary

Authoring is intentionally upstream of products. It imports Evidence for neutral trust primitives and must not import OpenUdon, Ramen, UWS, or API-source packages. Downstream adapters translate product metadata into Authoring contracts and own product prompts, validation, artifacts, credentials, model clients, execution, and state. API operation lifecycle ranking belongs to github.com/OpenUdon/apitools/operationlifecycle, where it consumes apitools.OperationSummary and source provenance directly.

Default tests and examples use fake runtimes and fake clients only. They do not require credentials, model providers, API calls, workflow execution, Terraform/OpenTofu execution, or trusted-runner access.

Downstream Use Cases

Authoring is shared loop infrastructure, not a product CLI. OpenUdon and Ramen use it for different authoring jobs:

  • OpenUdon iCoT starts from workflow automation intent. Its downstream adapter may guide catalog/API artifact selection or retrieval, then writes OpenUdon workflow authoring artifacts such as project.md, workflows/intent.hcl, review/eval reports, and package-oriented files. This path is oriented toward general workflow authors who may need more guidance from a goal to API artifact selection.
  • Ramen iCoT starts from desired-state infrastructure intent plus explicit local API source metadata, such as OpenAPI, Smithy, or Discovery documents. Its downstream adapter writes native Ramen/UWS desired-state projects such as project.uws.yaml, then can run Ramen validation, graph, and static plan gates before any trusted executor boundary. This path is oriented toward enterprise IaC users who are expected to know the target API source category and want controlled validation, planning, state, approval, and apply semantics.
  • Ramen conversion is separate from iCoT. It converts existing Terraform/OpenTofu configuration plus explicit local API source metadata into native Ramen/UWS review artifacts.

The practical distinction is that workflow authoring can be exploratory, while IaC authoring should make the target API source category explicit. Authoring supports the shared prompting, transcript, readiness, decision, and report mechanics for both, but source discovery, provider mappings, generated artifact formats, state, approval, and execution remain downstream responsibilities. Ramen should not import OpenUdon workflow packages or expose a generic from-openudon/import openudon path; the use cases and product semantics are intentionally different.

Shared Context

The two iCoT adapters share generic Authoring context and loop mechanics:

  • prompt sessions, default modes, answer replay, and transcript records
  • dependency-ready frontier rounds, one normalization/autosave after applying each complete answer set, atomic interview settlement, semantic progress fingerprints, a configurable emergency round fuse, three-round no-progress diagnosis, and final confirmation flow
  • readiness issue and interactive question shapes with one forced flag, one recommendation, priority, concise rationale, and evidence references
  • decision evidence normalization and confirmation policy
  • prompt-safe source, operation, schema, and credential-alternative context records
  • agent result, diagnostic, artifact, metadata, and scorecard report shapes
  • common CLI flags for prompt mode, no-LLM, model labels, answers, reports, and transcripts

The downstream adapters provide the product hooks that make those records mean something. OpenUdon binds workflow intent, catalog retrieval, request mapping, flow review, and package artifacts. Ramen binds API-source translation, desired-state resources, validation, graph, static plan, state, approval, and trusted execution boundaries.

OpenUdon iCoT

OpenUdon exposes its workflow-authoring loop from the downstream checkout:

(cd ../openudon && go run ./cmd/icot --example examples/<name>)
(cd ../openudon && go run ./cmd/openudon build --example examples/<name>)

The iCoT command writes the human/project brief and structured intent. The downstream openudon build command then deterministically regenerates the public workflow artifacts, review evidence, and quality reports from workflows/intent.hcl.

Common downstream options:

OptionPurpose
--example DIR / --dir DIRExample directory to create or update.
--from-example DIRSeed answers from an existing example.
--answers PATHReplay a YAML or JSON session/answers file.
--force / --yesOverwrite existing files, optionally without prompts.
--printRender without writing files.
--agentReturn needs_input instead of prompting when incomplete.
--no-llmDisable optional model extraction assistance.
--provider, --model, --temperatureDownstream model configuration.
--prompt-mode full|normal|fastControl defaulted question behavior.
--json, --report PATHEmit or save a structured report.

Typical downstream output files and directories:

project.md
workflows/intent.hcl
workflows/workflow.hcl
workflows/workflow.uws.yaml
openapi/
workflows/
expected/
expected/plan.json
expected/review.md
expected/review-handoff.json
expected/quality.json
.icot/

OpenUdon also owns related downstream subcommands such as build, reconcile, lint, repair, scorecard, variants, replay-eval, authoring-eval, and report verify.

Ramen iCoT

Ramen exposes a desired-state authoring path from the downstream checkout:

(cd ../ramen && go run ./cmd/ramen icot \
--goal "Create an Azure Cosmos DB account" \
--api-source openapi:azure-cosmos=/abs/path/azure-cosmos.json \
--out .ramen/icot/azure-cosmos \
--validate \
--graph \
--plan)

Common downstream options:

OptionPurpose
--goal TEXTDesired-state project goal.
--api-source KIND:ID=PATHRepeatable local API source input.
--project-name NAMEOptional generated project name.
--out DIROutput directory for project.uws.yaml.
--validate, --graph, --planRun non-executing Ramen gates after drafting.
--state PATHSQLite state path for the static plan gate.
--answers PATHReplay answers/session JSON.
--agentRun noninteractively and return needs_input when incomplete.
--no-llmDisable optional model assistance.
--provider, --model, --temperatureDownstream model configuration.
--prompt-mode full|normal|fastControl defaulted question behavior.
--json, --report PATHEmit or save a structured report.
--no-transcriptDisable transcript persistence.

Typical downstream output files:

.ramen/icot/project.uws.yaml
.ramen/icot/<optional transcript/report files>

When requested, validation, graph, and plan results are returned in the command result. They do not execute API operations or trusted executor actions.

Ramen Convert

Ramen conversion is not an iCoT loop. It converts existing Terraform/OpenTofu configuration plus explicit local API source metadata:

(cd ../ramen && go run ./cmd/ramen convert \
--config-dir ./tf \
--api-source openapi:azure-cosmos=/abs/path/azure-cosmos.json \
--action create \
--out .ramen/convert/azure-cosmos)

Common downstream options:

OptionPurpose
--config-dir DIRTerraform/OpenTofu configuration directory.
--api-source KIND:ID=PATHRepeatable local API source input.
--openapi ID=PATHOpenAPI shorthand for --api-source openapi:ID=PATH.
--action create|update|delete|replaceRequired for managed resources.
--target ADDRESSRepeatable Terraform address filter.
--out DIROutput directory for review artifacts.
--strictFail when strict-failure diagnostics remain.

Typical downstream output files:

.ramen/convert/project.md
.ramen/convert/project.uws.yaml
.ramen/convert/project.uws.hcl
.ramen/convert/workflows/workflow.uws.yaml
.ramen/convert/workflows/workflow.uws.hcl
.ramen/convert/expected/conversion.json
.ramen/convert/expected/mappings.json
.ramen/convert/expected/diagnostics.json
.ramen/convert/expected/diagnostics.md
.ramen/convert/expected/plan.json
.ramen/convert/expected/plan.md
.ramen/convert/expected/review.md

Compatibility

Authoring is pre-1.0. Versioned durable records use authoring.*.v1 constants, but exported APIs may still change while OpenUdon and Ramen adoption settles. See COMPATIBILITY.md for the current policy and migration expectations.

Examples

Runnable examples in examples_test.go cover manual prompting, agent-style result/digest records, structured JSON fallback with a fake client, and a progressive loop with a fake runtime.

Checks

go test ./...
go vet ./...
git diff --check

From the Authoring checkout inside the parent workspace, run the cross-repo gate:

./scripts/check-compat.sh

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - OpenUdon/authoring · GitHub
Skip to content

Repository files navigation

Authoring

Authoring is the shared Go module for product-neutral authoring orchestration used by OpenUdon and Ramen.

It owns generic sessions, transcripts, prompt/replay helpers, draft lifecycle persistence, structured JSON fallback, dependency-aware interview graphs, frontier-round iCoT loops, readiness/question planning, decision evidence, report metadata, scorecard records, and prompt-safe context shapes.

It does not own OpenUdon workflow package semantics, Ramen desired-state semantics, UWS document semantics, API-source parsing, credential resolution, model-provider clients, live execution, governance, state, or reconciliation.

Packages

  • trust: Evidence-backed diagnostic, artifact, digest, and redaction names.
  • session: durable prompt session state and answers.
  • transcript: transcript turns, events, diagnostics, artifacts, and model provenance.
  • prompt: local prompting, default modes, replay scripts, and prompt transcripts.
  • lifecycle: draft envelopes, atomic writes, autosave, and artifact helpers.
  • structured: provider-neutral structured JSON completion and legacy JSON fallback.
  • icot: generic progressive and interactive iCoT loops, interview bindings, lifecycle hooks, semantic progress detection, and bound-runtime interfaces.
  • interview: authoring.interview.v1 dependency graphs, unified evidence, answers, deferrals, atomic frontier settlement, validation, status transitions, and ready frontiers.
  • icotcli: shared iCoT CLI flag plumbing and prompt/model label helpers.
  • readiness: readiness summaries, blocking/warning sorting, and question planning.
  • decision: decision evidence, confidence behavior, and confirmation policy.
  • report: agent result contracts, report metadata, scorecards, and variants.
  • promptcontext: authoring.prompt-context.v2 source documents, operations, schema hints, and symbolic OR-of-AND credential binding alternatives.

Boundary

Authoring is intentionally upstream of products. It imports Evidence for neutral trust primitives and must not import OpenUdon, Ramen, UWS, or API-source packages. Downstream adapters translate product metadata into Authoring contracts and own product prompts, validation, artifacts, credentials, model clients, execution, and state. API operation lifecycle ranking belongs to github.com/OpenUdon/apitools/operationlifecycle, where it consumes apitools.OperationSummary and source provenance directly.

Default tests and examples use fake runtimes and fake clients only. They do not require credentials, model providers, API calls, workflow execution, Terraform/OpenTofu execution, or trusted-runner access.

Downstream Use Cases

Authoring is shared loop infrastructure, not a product CLI. OpenUdon and Ramen use it for different authoring jobs:

  • OpenUdon iCoT starts from workflow automation intent. Its downstream adapter may guide catalog/API artifact selection or retrieval, then writes OpenUdon workflow authoring artifacts such as project.md, workflows/intent.hcl, review/eval reports, and package-oriented files. This path is oriented toward general workflow authors who may need more guidance from a goal to API artifact selection.
  • Ramen iCoT starts from desired-state infrastructure intent plus explicit local API source metadata, such as OpenAPI, Smithy, or Discovery documents. Its downstream adapter writes native Ramen/UWS desired-state projects such as project.uws.yaml, then can run Ramen validation, graph, and static plan gates before any trusted executor boundary. This path is oriented toward enterprise IaC users who are expected to know the target API source category and want controlled validation, planning, state, approval, and apply semantics.
  • Ramen conversion is separate from iCoT. It converts existing Terraform/OpenTofu configuration plus explicit local API source metadata into native Ramen/UWS review artifacts.

The practical distinction is that workflow authoring can be exploratory, while IaC authoring should make the target API source category explicit. Authoring supports the shared prompting, transcript, readiness, decision, and report mechanics for both, but source discovery, provider mappings, generated artifact formats, state, approval, and execution remain downstream responsibilities. Ramen should not import OpenUdon workflow packages or expose a generic from-openudon/import openudon path; the use cases and product semantics are intentionally different.

Shared Context

The two iCoT adapters share generic Authoring context and loop mechanics:

  • prompt sessions, default modes, answer replay, and transcript records
  • dependency-ready frontier rounds, one normalization/autosave after applying each complete answer set, atomic interview settlement, semantic progress fingerprints, a configurable emergency round fuse, three-round no-progress diagnosis, and final confirmation flow
  • readiness issue and interactive question shapes with one forced flag, one recommendation, priority, concise rationale, and evidence references
  • decision evidence normalization and confirmation policy
  • prompt-safe source, operation, schema, and credential-alternative context records
  • agent result, diagnostic, artifact, metadata, and scorecard report shapes
  • common CLI flags for prompt mode, no-LLM, model labels, answers, reports, and transcripts

The downstream adapters provide the product hooks that make those records mean something. OpenUdon binds workflow intent, catalog retrieval, request mapping, flow review, and package artifacts. Ramen binds API-source translation, desired-state resources, validation, graph, static plan, state, approval, and trusted execution boundaries.

OpenUdon iCoT

OpenUdon exposes its workflow-authoring loop from the downstream checkout:

(cd ../openudon && go run ./cmd/icot --example examples/<name>)
(cd ../openudon && go run ./cmd/openudon build --example examples/<name>)

The iCoT command writes the human/project brief and structured intent. The downstream openudon build command then deterministically regenerates the public workflow artifacts, review evidence, and quality reports from workflows/intent.hcl.

Common downstream options:

OptionPurpose
--example DIR / --dir DIRExample directory to create or update.
--from-example DIRSeed answers from an existing example.
--answers PATHReplay a YAML or JSON session/answers file.
--force / --yesOverwrite existing files, optionally without prompts.
--printRender without writing files.
--agentReturn needs_input instead of prompting when incomplete.
--no-llmDisable optional model extraction assistance.
--provider, --model, --temperatureDownstream model configuration.
--prompt-mode full|normal|fastControl defaulted question behavior.
--json, --report PATHEmit or save a structured report.

Typical downstream output files and directories:

project.md
workflows/intent.hcl
workflows/workflow.hcl
workflows/workflow.uws.yaml
openapi/
workflows/
expected/
expected/plan.json
expected/review.md
expected/review-handoff.json
expected/quality.json
.icot/

OpenUdon also owns related downstream subcommands such as build, reconcile, lint, repair, scorecard, variants, replay-eval, authoring-eval, and report verify.

Ramen iCoT

Ramen exposes a desired-state authoring path from the downstream checkout:

(cd ../ramen && go run ./cmd/ramen icot \
--goal "Create an Azure Cosmos DB account" \
--api-source openapi:azure-cosmos=/abs/path/azure-cosmos.json \
--out .ramen/icot/azure-cosmos \
--validate \
--graph \
--plan)

Common downstream options:

OptionPurpose
--goal TEXTDesired-state project goal.
--api-source KIND:ID=PATHRepeatable local API source input.
--project-name NAMEOptional generated project name.
--out DIROutput directory for project.uws.yaml.
--validate, --graph, --planRun non-executing Ramen gates after drafting.
--state PATHSQLite state path for the static plan gate.
--answers PATHReplay answers/session JSON.
--agentRun noninteractively and return needs_input when incomplete.
--no-llmDisable optional model assistance.
--provider, --model, --temperatureDownstream model configuration.
--prompt-mode full|normal|fastControl defaulted question behavior.
--json, --report PATHEmit or save a structured report.
--no-transcriptDisable transcript persistence.

Typical downstream output files:

.ramen/icot/project.uws.yaml
.ramen/icot/<optional transcript/report files>

When requested, validation, graph, and plan results are returned in the command result. They do not execute API operations or trusted executor actions.

Ramen Convert

Ramen conversion is not an iCoT loop. It converts existing Terraform/OpenTofu configuration plus explicit local API source metadata:

(cd ../ramen && go run ./cmd/ramen convert \
--config-dir ./tf \
--api-source openapi:azure-cosmos=/abs/path/azure-cosmos.json \
--action create \
--out .ramen/convert/azure-cosmos)

Common downstream options:

OptionPurpose
--config-dir DIRTerraform/OpenTofu configuration directory.
--api-source KIND:ID=PATHRepeatable local API source input.
--openapi ID=PATHOpenAPI shorthand for --api-source openapi:ID=PATH.
--action create|update|delete|replaceRequired for managed resources.
--target ADDRESSRepeatable Terraform address filter.
--out DIROutput directory for review artifacts.
--strictFail when strict-failure diagnostics remain.

Typical downstream output files:

.ramen/convert/project.md
.ramen/convert/project.uws.yaml
.ramen/convert/project.uws.hcl
.ramen/convert/workflows/workflow.uws.yaml
.ramen/convert/workflows/workflow.uws.hcl
.ramen/convert/expected/conversion.json
.ramen/convert/expected/mappings.json
.ramen/convert/expected/diagnostics.json
.ramen/convert/expected/diagnostics.md
.ramen/convert/expected/plan.json
.ramen/convert/expected/plan.md
.ramen/convert/expected/review.md

Compatibility

Authoring is pre-1.0. Versioned durable records use authoring.*.v1 constants, but exported APIs may still change while OpenUdon and Ramen adoption settles. See COMPATIBILITY.md for the current policy and migration expectations.

Examples

Runnable examples in examples_test.go cover manual prompting, agent-style result/digest records, structured JSON fallback with a fake client, and a progressive loop with a fake runtime.

Checks

go test ./...
go vet ./...
git diff --check

From the Authoring checkout inside the parent workspace, run the cross-repo gate:

./scripts/check-compat.sh

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - OpenUdon/authoring · GitHub
Skip to content

Repository files navigation

Authoring

Authoring is the shared Go module for product-neutral authoring orchestration used by OpenUdon and Ramen.

It owns generic sessions, transcripts, prompt/replay helpers, draft lifecycle persistence, structured JSON fallback, dependency-aware interview graphs, frontier-round iCoT loops, readiness/question planning, decision evidence, report metadata, scorecard records, and prompt-safe context shapes.

It does not own OpenUdon workflow package semantics, Ramen desired-state semantics, UWS document semantics, API-source parsing, credential resolution, model-provider clients, live execution, governance, state, or reconciliation.

Packages

  • trust: Evidence-backed diagnostic, artifact, digest, and redaction names.
  • session: durable prompt session state and answers.
  • transcript: transcript turns, events, diagnostics, artifacts, and model provenance.
  • prompt: local prompting, default modes, replay scripts, and prompt transcripts.
  • lifecycle: draft envelopes, atomic writes, autosave, and artifact helpers.
  • structured: provider-neutral structured JSON completion and legacy JSON fallback.
  • icot: generic progressive and interactive iCoT loops, interview bindings, lifecycle hooks, semantic progress detection, and bound-runtime interfaces.
  • interview: authoring.interview.v1 dependency graphs, unified evidence, answers, deferrals, atomic frontier settlement, validation, status transitions, and ready frontiers.
  • icotcli: shared iCoT CLI flag plumbing and prompt/model label helpers.
  • readiness: readiness summaries, blocking/warning sorting, and question planning.
  • decision: decision evidence, confidence behavior, and confirmation policy.
  • report: agent result contracts, report metadata, scorecards, and variants.
  • promptcontext: authoring.prompt-context.v2 source documents, operations, schema hints, and symbolic OR-of-AND credential binding alternatives.

Boundary

Authoring is intentionally upstream of products. It imports Evidence for neutral trust primitives and must not import OpenUdon, Ramen, UWS, or API-source packages. Downstream adapters translate product metadata into Authoring contracts and own product prompts, validation, artifacts, credentials, model clients, execution, and state. API operation lifecycle ranking belongs to github.com/OpenUdon/apitools/operationlifecycle, where it consumes apitools.OperationSummary and source provenance directly.

Default tests and examples use fake runtimes and fake clients only. They do not require credentials, model providers, API calls, workflow execution, Terraform/OpenTofu execution, or trusted-runner access.

Downstream Use Cases

Authoring is shared loop infrastructure, not a product CLI. OpenUdon and Ramen use it for different authoring jobs:

  • OpenUdon iCoT starts from workflow automation intent. Its downstream adapter may guide catalog/API artifact selection or retrieval, then writes OpenUdon workflow authoring artifacts such as project.md, workflows/intent.hcl, review/eval reports, and package-oriented files. This path is oriented toward general workflow authors who may need more guidance from a goal to API artifact selection.
  • Ramen iCoT starts from desired-state infrastructure intent plus explicit local API source metadata, such as OpenAPI, Smithy, or Discovery documents. Its downstream adapter writes native Ramen/UWS desired-state projects such as project.uws.yaml, then can run Ramen validation, graph, and static plan gates before any trusted executor boundary. This path is oriented toward enterprise IaC users who are expected to know the target API source category and want controlled validation, planning, state, approval, and apply semantics.
  • Ramen conversion is separate from iCoT. It converts existing Terraform/OpenTofu configuration plus explicit local API source metadata into native Ramen/UWS review artifacts.

The practical distinction is that workflow authoring can be exploratory, while IaC authoring should make the target API source category explicit. Authoring supports the shared prompting, transcript, readiness, decision, and report mechanics for both, but source discovery, provider mappings, generated artifact formats, state, approval, and execution remain downstream responsibilities. Ramen should not import OpenUdon workflow packages or expose a generic from-openudon/import openudon path; the use cases and product semantics are intentionally different.

Shared Context

The two iCoT adapters share generic Authoring context and loop mechanics:

  • prompt sessions, default modes, answer replay, and transcript records
  • dependency-ready frontier rounds, one normalization/autosave after applying each complete answer set, atomic interview settlement, semantic progress fingerprints, a configurable emergency round fuse, three-round no-progress diagnosis, and final confirmation flow
  • readiness issue and interactive question shapes with one forced flag, one recommendation, priority, concise rationale, and evidence references
  • decision evidence normalization and confirmation policy
  • prompt-safe source, operation, schema, and credential-alternative context records
  • agent result, diagnostic, artifact, metadata, and scorecard report shapes
  • common CLI flags for prompt mode, no-LLM, model labels, answers, reports, and transcripts

The downstream adapters provide the product hooks that make those records mean something. OpenUdon binds workflow intent, catalog retrieval, request mapping, flow review, and package artifacts. Ramen binds API-source translation, desired-state resources, validation, graph, static plan, state, approval, and trusted execution boundaries.

OpenUdon iCoT

OpenUdon exposes its workflow-authoring loop from the downstream checkout:

(cd ../openudon && go run ./cmd/icot --example examples/<name>)
(cd ../openudon && go run ./cmd/openudon build --example examples/<name>)

The iCoT command writes the human/project brief and structured intent. The downstream openudon build command then deterministically regenerates the public workflow artifacts, review evidence, and quality reports from workflows/intent.hcl.

Common downstream options:

OptionPurpose
--example DIR / --dir DIRExample directory to create or update.
--from-example DIRSeed answers from an existing example.
--answers PATHReplay a YAML or JSON session/answers file.
--force / --yesOverwrite existing files, optionally without prompts.
--printRender without writing files.
--agentReturn needs_input instead of prompting when incomplete.
--no-llmDisable optional model extraction assistance.
--provider, --model, --temperatureDownstream model configuration.
--prompt-mode full|normal|fastControl defaulted question behavior.
--json, --report PATHEmit or save a structured report.

Typical downstream output files and directories:

project.md
workflows/intent.hcl
workflows/workflow.hcl
workflows/workflow.uws.yaml
openapi/
workflows/
expected/
expected/plan.json
expected/review.md
expected/review-handoff.json
expected/quality.json
.icot/

OpenUdon also owns related downstream subcommands such as build, reconcile, lint, repair, scorecard, variants, replay-eval, authoring-eval, and report verify.

Ramen iCoT

Ramen exposes a desired-state authoring path from the downstream checkout:

(cd ../ramen && go run ./cmd/ramen icot \
--goal "Create an Azure Cosmos DB account" \
--api-source openapi:azure-cosmos=/abs/path/azure-cosmos.json \
--out .ramen/icot/azure-cosmos \
--validate \
--graph \
--plan)

Common downstream options:

OptionPurpose
--goal TEXTDesired-state project goal.
--api-source KIND:ID=PATHRepeatable local API source input.
--project-name NAMEOptional generated project name.
--out DIROutput directory for project.uws.yaml.
--validate, --graph, --planRun non-executing Ramen gates after drafting.
--state PATHSQLite state path for the static plan gate.
--answers PATHReplay answers/session JSON.
--agentRun noninteractively and return needs_input when incomplete.
--no-llmDisable optional model assistance.
--provider, --model, --temperatureDownstream model configuration.
--prompt-mode full|normal|fastControl defaulted question behavior.
--json, --report PATHEmit or save a structured report.
--no-transcriptDisable transcript persistence.

Typical downstream output files:

.ramen/icot/project.uws.yaml
.ramen/icot/<optional transcript/report files>

When requested, validation, graph, and plan results are returned in the command result. They do not execute API operations or trusted executor actions.

Ramen Convert

Ramen conversion is not an iCoT loop. It converts existing Terraform/OpenTofu configuration plus explicit local API source metadata:

(cd ../ramen && go run ./cmd/ramen convert \
--config-dir ./tf \
--api-source openapi:azure-cosmos=/abs/path/azure-cosmos.json \
--action create \
--out .ramen/convert/azure-cosmos)

Common downstream options:

OptionPurpose
--config-dir DIRTerraform/OpenTofu configuration directory.
--api-source KIND:ID=PATHRepeatable local API source input.
--openapi ID=PATHOpenAPI shorthand for --api-source openapi:ID=PATH.
--action create|update|delete|replaceRequired for managed resources.
--target ADDRESSRepeatable Terraform address filter.
--out DIROutput directory for review artifacts.
--strictFail when strict-failure diagnostics remain.

Typical downstream output files:

.ramen/convert/project.md
.ramen/convert/project.uws.yaml
.ramen/convert/project.uws.hcl
.ramen/convert/workflows/workflow.uws.yaml
.ramen/convert/workflows/workflow.uws.hcl
.ramen/convert/expected/conversion.json
.ramen/convert/expected/mappings.json
.ramen/convert/expected/diagnostics.json
.ramen/convert/expected/diagnostics.md
.ramen/convert/expected/plan.json
.ramen/convert/expected/plan.md
.ramen/convert/expected/review.md

Compatibility

Authoring is pre-1.0. Versioned durable records use authoring.*.v1 constants, but exported APIs may still change while OpenUdon and Ramen adoption settles. See COMPATIBILITY.md for the current policy and migration expectations.

Examples

Runnable examples in examples_test.go cover manual prompting, agent-style result/digest records, structured JSON fallback with a fake client, and a progressive loop with a fake runtime.

Checks

go test ./...
go vet ./...
git diff --check

From the Authoring checkout inside the parent workspace, run the cross-repo gate:

./scripts/check-compat.sh

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - OpenUdon/authoring · GitHub
Skip to content

Repository files navigation

Authoring

Authoring is the shared Go module for product-neutral authoring orchestration used by OpenUdon and Ramen.

It owns generic sessions, transcripts, prompt/replay helpers, draft lifecycle persistence, structured JSON fallback, dependency-aware interview graphs, frontier-round iCoT loops, readiness/question planning, decision evidence, report metadata, scorecard records, and prompt-safe context shapes.

It does not own OpenUdon workflow package semantics, Ramen desired-state semantics, UWS document semantics, API-source parsing, credential resolution, model-provider clients, live execution, governance, state, or reconciliation.

Packages

  • trust: Evidence-backed diagnostic, artifact, digest, and redaction names.
  • session: durable prompt session state and answers.
  • transcript: transcript turns, events, diagnostics, artifacts, and model provenance.
  • prompt: local prompting, default modes, replay scripts, and prompt transcripts.
  • lifecycle: draft envelopes, atomic writes, autosave, and artifact helpers.
  • structured: provider-neutral structured JSON completion and legacy JSON fallback.
  • icot: generic progressive and interactive iCoT loops, interview bindings, lifecycle hooks, semantic progress detection, and bound-runtime interfaces.
  • interview: authoring.interview.v1 dependency graphs, unified evidence, answers, deferrals, atomic frontier settlement, validation, status transitions, and ready frontiers.
  • icotcli: shared iCoT CLI flag plumbing and prompt/model label helpers.
  • readiness: readiness summaries, blocking/warning sorting, and question planning.
  • decision: decision evidence, confidence behavior, and confirmation policy.
  • report: agent result contracts, report metadata, scorecards, and variants.
  • promptcontext: authoring.prompt-context.v2 source documents, operations, schema hints, and symbolic OR-of-AND credential binding alternatives.

Boundary

Authoring is intentionally upstream of products. It imports Evidence for neutral trust primitives and must not import OpenUdon, Ramen, UWS, or API-source packages. Downstream adapters translate product metadata into Authoring contracts and own product prompts, validation, artifacts, credentials, model clients, execution, and state. API operation lifecycle ranking belongs to github.com/OpenUdon/apitools/operationlifecycle, where it consumes apitools.OperationSummary and source provenance directly.

Default tests and examples use fake runtimes and fake clients only. They do not require credentials, model providers, API calls, workflow execution, Terraform/OpenTofu execution, or trusted-runner access.

Downstream Use Cases

Authoring is shared loop infrastructure, not a product CLI. OpenUdon and Ramen use it for different authoring jobs:

  • OpenUdon iCoT starts from workflow automation intent. Its downstream adapter may guide catalog/API artifact selection or retrieval, then writes OpenUdon workflow authoring artifacts such as project.md, workflows/intent.hcl, review/eval reports, and package-oriented files. This path is oriented toward general workflow authors who may need more guidance from a goal to API artifact selection.
  • Ramen iCoT starts from desired-state infrastructure intent plus explicit local API source metadata, such as OpenAPI, Smithy, or Discovery documents. Its downstream adapter writes native Ramen/UWS desired-state projects such as project.uws.yaml, then can run Ramen validation, graph, and static plan gates before any trusted executor boundary. This path is oriented toward enterprise IaC users who are expected to know the target API source category and want controlled validation, planning, state, approval, and apply semantics.
  • Ramen conversion is separate from iCoT. It converts existing Terraform/OpenTofu configuration plus explicit local API source metadata into native Ramen/UWS review artifacts.

The practical distinction is that workflow authoring can be exploratory, while IaC authoring should make the target API source category explicit. Authoring supports the shared prompting, transcript, readiness, decision, and report mechanics for both, but source discovery, provider mappings, generated artifact formats, state, approval, and execution remain downstream responsibilities. Ramen should not import OpenUdon workflow packages or expose a generic from-openudon/import openudon path; the use cases and product semantics are intentionally different.

Shared Context

The two iCoT adapters share generic Authoring context and loop mechanics:

  • prompt sessions, default modes, answer replay, and transcript records
  • dependency-ready frontier rounds, one normalization/autosave after applying each complete answer set, atomic interview settlement, semantic progress fingerprints, a configurable emergency round fuse, three-round no-progress diagnosis, and final confirmation flow
  • readiness issue and interactive question shapes with one forced flag, one recommendation, priority, concise rationale, and evidence references
  • decision evidence normalization and confirmation policy
  • prompt-safe source, operation, schema, and credential-alternative context records
  • agent result, diagnostic, artifact, metadata, and scorecard report shapes
  • common CLI flags for prompt mode, no-LLM, model labels, answers, reports, and transcripts

The downstream adapters provide the product hooks that make those records mean something. OpenUdon binds workflow intent, catalog retrieval, request mapping, flow review, and package artifacts. Ramen binds API-source translation, desired-state resources, validation, graph, static plan, state, approval, and trusted execution boundaries.

OpenUdon iCoT

OpenUdon exposes its workflow-authoring loop from the downstream checkout:

(cd ../openudon && go run ./cmd/icot --example examples/<name>)
(cd ../openudon && go run ./cmd/openudon build --example examples/<name>)

The iCoT command writes the human/project brief and structured intent. The downstream openudon build command then deterministically regenerates the public workflow artifacts, review evidence, and quality reports from workflows/intent.hcl.

Common downstream options:

OptionPurpose
--example DIR / --dir DIRExample directory to create or update.
--from-example DIRSeed answers from an existing example.
--answers PATHReplay a YAML or JSON session/answers file.
--force / --yesOverwrite existing files, optionally without prompts.
--printRender without writing files.
--agentReturn needs_input instead of prompting when incomplete.
--no-llmDisable optional model extraction assistance.
--provider, --model, --temperatureDownstream model configuration.
--prompt-mode full|normal|fastControl defaulted question behavior.
--json, --report PATHEmit or save a structured report.

Typical downstream output files and directories:

project.md
workflows/intent.hcl
workflows/workflow.hcl
workflows/workflow.uws.yaml
openapi/
workflows/
expected/
expected/plan.json
expected/review.md
expected/review-handoff.json
expected/quality.json
.icot/

OpenUdon also owns related downstream subcommands such as build, reconcile, lint, repair, scorecard, variants, replay-eval, authoring-eval, and report verify.

Ramen iCoT

Ramen exposes a desired-state authoring path from the downstream checkout:

(cd ../ramen && go run ./cmd/ramen icot \
--goal "Create an Azure Cosmos DB account" \
--api-source openapi:azure-cosmos=/abs/path/azure-cosmos.json \
--out .ramen/icot/azure-cosmos \
--validate \
--graph \
--plan)

Common downstream options:

OptionPurpose
--goal TEXTDesired-state project goal.
--api-source KIND:ID=PATHRepeatable local API source input.
--project-name NAMEOptional generated project name.
--out DIROutput directory for project.uws.yaml.
--validate, --graph, --planRun non-executing Ramen gates after drafting.
--state PATHSQLite state path for the static plan gate.
--answers PATHReplay answers/session JSON.
--agentRun noninteractively and return needs_input when incomplete.
--no-llmDisable optional model assistance.
--provider, --model, --temperatureDownstream model configuration.
--prompt-mode full|normal|fastControl defaulted question behavior.
--json, --report PATHEmit or save a structured report.
--no-transcriptDisable transcript persistence.

Typical downstream output files:

.ramen/icot/project.uws.yaml
.ramen/icot/<optional transcript/report files>

When requested, validation, graph, and plan results are returned in the command result. They do not execute API operations or trusted executor actions.

Ramen Convert

Ramen conversion is not an iCoT loop. It converts existing Terraform/OpenTofu configuration plus explicit local API source metadata:

(cd ../ramen && go run ./cmd/ramen convert \
--config-dir ./tf \
--api-source openapi:azure-cosmos=/abs/path/azure-cosmos.json \
--action create \
--out .ramen/convert/azure-cosmos)

Common downstream options:

OptionPurpose
--config-dir DIRTerraform/OpenTofu configuration directory.
--api-source KIND:ID=PATHRepeatable local API source input.
--openapi ID=PATHOpenAPI shorthand for --api-source openapi:ID=PATH.
--action create|update|delete|replaceRequired for managed resources.
--target ADDRESSRepeatable Terraform address filter.
--out DIROutput directory for review artifacts.
--strictFail when strict-failure diagnostics remain.

Typical downstream output files:

.ramen/convert/project.md
.ramen/convert/project.uws.yaml
.ramen/convert/project.uws.hcl
.ramen/convert/workflows/workflow.uws.yaml
.ramen/convert/workflows/workflow.uws.hcl
.ramen/convert/expected/conversion.json
.ramen/convert/expected/mappings.json
.ramen/convert/expected/diagnostics.json
.ramen/convert/expected/diagnostics.md
.ramen/convert/expected/plan.json
.ramen/convert/expected/plan.md
.ramen/convert/expected/review.md

Compatibility

Authoring is pre-1.0. Versioned durable records use authoring.*.v1 constants, but exported APIs may still change while OpenUdon and Ramen adoption settles. See COMPATIBILITY.md for the current policy and migration expectations.

Examples

Runnable examples in examples_test.go cover manual prompting, agent-style result/digest records, structured JSON fallback with a fake client, and a progressive loop with a fake runtime.

Checks

go test ./...
go vet ./...
git diff --check

From the Authoring checkout inside the parent workspace, run the cross-repo gate:

./scripts/check-compat.sh

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - OpenUdon/authoring · GitHub
Skip to content

Repository files navigation

Authoring

Authoring is the shared Go module for product-neutral authoring orchestration used by OpenUdon and Ramen.

It owns generic sessions, transcripts, prompt/replay helpers, draft lifecycle persistence, structured JSON fallback, dependency-aware interview graphs, frontier-round iCoT loops, readiness/question planning, decision evidence, report metadata, scorecard records, and prompt-safe context shapes.

It does not own OpenUdon workflow package semantics, Ramen desired-state semantics, UWS document semantics, API-source parsing, credential resolution, model-provider clients, live execution, governance, state, or reconciliation.

Packages

  • trust: Evidence-backed diagnostic, artifact, digest, and redaction names.
  • session: durable prompt session state and answers.
  • transcript: transcript turns, events, diagnostics, artifacts, and model provenance.
  • prompt: local prompting, default modes, replay scripts, and prompt transcripts.
  • lifecycle: draft envelopes, atomic writes, autosave, and artifact helpers.
  • structured: provider-neutral structured JSON completion and legacy JSON fallback.
  • icot: generic progressive and interactive iCoT loops, interview bindings, lifecycle hooks, semantic progress detection, and bound-runtime interfaces.
  • interview: authoring.interview.v1 dependency graphs, unified evidence, answers, deferrals, atomic frontier settlement, validation, status transitions, and ready frontiers.
  • icotcli: shared iCoT CLI flag plumbing and prompt/model label helpers.
  • readiness: readiness summaries, blocking/warning sorting, and question planning.
  • decision: decision evidence, confidence behavior, and confirmation policy.
  • report: agent result contracts, report metadata, scorecards, and variants.
  • promptcontext: authoring.prompt-context.v2 source documents, operations, schema hints, and symbolic OR-of-AND credential binding alternatives.

Boundary

Authoring is intentionally upstream of products. It imports Evidence for neutral trust primitives and must not import OpenUdon, Ramen, UWS, or API-source packages. Downstream adapters translate product metadata into Authoring contracts and own product prompts, validation, artifacts, credentials, model clients, execution, and state. API operation lifecycle ranking belongs to github.com/OpenUdon/apitools/operationlifecycle, where it consumes apitools.OperationSummary and source provenance directly.

Default tests and examples use fake runtimes and fake clients only. They do not require credentials, model providers, API calls, workflow execution, Terraform/OpenTofu execution, or trusted-runner access.

Downstream Use Cases

Authoring is shared loop infrastructure, not a product CLI. OpenUdon and Ramen use it for different authoring jobs:

  • OpenUdon iCoT starts from workflow automation intent. Its downstream adapter may guide catalog/API artifact selection or retrieval, then writes OpenUdon workflow authoring artifacts such as project.md, workflows/intent.hcl, review/eval reports, and package-oriented files. This path is oriented toward general workflow authors who may need more guidance from a goal to API artifact selection.
  • Ramen iCoT starts from desired-state infrastructure intent plus explicit local API source metadata, such as OpenAPI, Smithy, or Discovery documents. Its downstream adapter writes native Ramen/UWS desired-state projects such as project.uws.yaml, then can run Ramen validation, graph, and static plan gates before any trusted executor boundary. This path is oriented toward enterprise IaC users who are expected to know the target API source category and want controlled validation, planning, state, approval, and apply semantics.
  • Ramen conversion is separate from iCoT. It converts existing Terraform/OpenTofu configuration plus explicit local API source metadata into native Ramen/UWS review artifacts.

The practical distinction is that workflow authoring can be exploratory, while IaC authoring should make the target API source category explicit. Authoring supports the shared prompting, transcript, readiness, decision, and report mechanics for both, but source discovery, provider mappings, generated artifact formats, state, approval, and execution remain downstream responsibilities. Ramen should not import OpenUdon workflow packages or expose a generic from-openudon/import openudon path; the use cases and product semantics are intentionally different.

Shared Context

The two iCoT adapters share generic Authoring context and loop mechanics:

  • prompt sessions, default modes, answer replay, and transcript records
  • dependency-ready frontier rounds, one normalization/autosave after applying each complete answer set, atomic interview settlement, semantic progress fingerprints, a configurable emergency round fuse, three-round no-progress diagnosis, and final confirmation flow
  • readiness issue and interactive question shapes with one forced flag, one recommendation, priority, concise rationale, and evidence references
  • decision evidence normalization and confirmation policy
  • prompt-safe source, operation, schema, and credential-alternative context records
  • agent result, diagnostic, artifact, metadata, and scorecard report shapes
  • common CLI flags for prompt mode, no-LLM, model labels, answers, reports, and transcripts

The downstream adapters provide the product hooks that make those records mean something. OpenUdon binds workflow intent, catalog retrieval, request mapping, flow review, and package artifacts. Ramen binds API-source translation, desired-state resources, validation, graph, static plan, state, approval, and trusted execution boundaries.

OpenUdon iCoT

OpenUdon exposes its workflow-authoring loop from the downstream checkout:

(cd ../openudon && go run ./cmd/icot --example examples/<name>)
(cd ../openudon && go run ./cmd/openudon build --example examples/<name>)

The iCoT command writes the human/project brief and structured intent. The downstream openudon build command then deterministically regenerates the public workflow artifacts, review evidence, and quality reports from workflows/intent.hcl.

Common downstream options:

OptionPurpose
--example DIR / --dir DIRExample directory to create or update.
--from-example DIRSeed answers from an existing example.
--answers PATHReplay a YAML or JSON session/answers file.
--force / --yesOverwrite existing files, optionally without prompts.
--printRender without writing files.
--agentReturn needs_input instead of prompting when incomplete.
--no-llmDisable optional model extraction assistance.
--provider, --model, --temperatureDownstream model configuration.
--prompt-mode full|normal|fastControl defaulted question behavior.
--json, --report PATHEmit or save a structured report.

Typical downstream output files and directories:

project.md
workflows/intent.hcl
workflows/workflow.hcl
workflows/workflow.uws.yaml
openapi/
workflows/
expected/
expected/plan.json
expected/review.md
expected/review-handoff.json
expected/quality.json
.icot/

OpenUdon also owns related downstream subcommands such as build, reconcile, lint, repair, scorecard, variants, replay-eval, authoring-eval, and report verify.

Ramen iCoT

Ramen exposes a desired-state authoring path from the downstream checkout:

(cd ../ramen && go run ./cmd/ramen icot \
--goal "Create an Azure Cosmos DB account" \
--api-source openapi:azure-cosmos=/abs/path/azure-cosmos.json \
--out .ramen/icot/azure-cosmos \
--validate \
--graph \
--plan)

Common downstream options:

OptionPurpose
--goal TEXTDesired-state project goal.
--api-source KIND:ID=PATHRepeatable local API source input.
--project-name NAMEOptional generated project name.
--out DIROutput directory for project.uws.yaml.
--validate, --graph, --planRun non-executing Ramen gates after drafting.
--state PATHSQLite state path for the static plan gate.
--answers PATHReplay answers/session JSON.
--agentRun noninteractively and return needs_input when incomplete.
--no-llmDisable optional model assistance.
--provider, --model, --temperatureDownstream model configuration.
--prompt-mode full|normal|fastControl defaulted question behavior.
--json, --report PATHEmit or save a structured report.
--no-transcriptDisable transcript persistence.

Typical downstream output files:

.ramen/icot/project.uws.yaml
.ramen/icot/<optional transcript/report files>

When requested, validation, graph, and plan results are returned in the command result. They do not execute API operations or trusted executor actions.

Ramen Convert

Ramen conversion is not an iCoT loop. It converts existing Terraform/OpenTofu configuration plus explicit local API source metadata:

(cd ../ramen && go run ./cmd/ramen convert \
--config-dir ./tf \
--api-source openapi:azure-cosmos=/abs/path/azure-cosmos.json \
--action create \
--out .ramen/convert/azure-cosmos)

Common downstream options:

OptionPurpose
--config-dir DIRTerraform/OpenTofu configuration directory.
--api-source KIND:ID=PATHRepeatable local API source input.
--openapi ID=PATHOpenAPI shorthand for --api-source openapi:ID=PATH.
--action create|update|delete|replaceRequired for managed resources.
--target ADDRESSRepeatable Terraform address filter.
--out DIROutput directory for review artifacts.
--strictFail when strict-failure diagnostics remain.

Typical downstream output files:

.ramen/convert/project.md
.ramen/convert/project.uws.yaml
.ramen/convert/project.uws.hcl
.ramen/convert/workflows/workflow.uws.yaml
.ramen/convert/workflows/workflow.uws.hcl
.ramen/convert/expected/conversion.json
.ramen/convert/expected/mappings.json
.ramen/convert/expected/diagnostics.json
.ramen/convert/expected/diagnostics.md
.ramen/convert/expected/plan.json
.ramen/convert/expected/plan.md
.ramen/convert/expected/review.md

Compatibility

Authoring is pre-1.0. Versioned durable records use authoring.*.v1 constants, but exported APIs may still change while OpenUdon and Ramen adoption settles. See COMPATIBILITY.md for the current policy and migration expectations.

Examples

Runnable examples in examples_test.go cover manual prompting, agent-style result/digest records, structured JSON fallback with a fake client, and a progressive loop with a fake runtime.

Checks

go test ./...
go vet ./...
git diff --check

From the Authoring checkout inside the parent workspace, run the cross-repo gate:

./scripts/check-compat.sh

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages