forgeos 0.1.0-alpha.70 → 0.1.0-alpha.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/.agents/skills/forge-agent-fabric/SKILL.md +10 -1
  2. package/AGENTS.md +1 -1
  3. package/CHANGELOG.md +6 -0
  4. package/docs/agent-fabric-programs.md +151 -168
  5. package/docs/agent-fabric.md +4 -6
  6. package/docs/architecture/agent-fabric/WORKFLOW_PROGRAM_V2_ADR.md +81 -41
  7. package/docs/architecture/agent-fabric/WORKFLOW_PROGRAM_V2_CORRECTIONS.md +39 -0
  8. package/docs/architecture/agent-fabric/WORKFLOW_PROGRAM_V2_CORRECTIONS_EVIDENCE.md +53 -0
  9. package/docs/architecture/agent-fabric/WORKFLOW_PROGRAM_V2_EVIDENCE.md +49 -109
  10. package/docs/architecture/agent-fabric/WORKFLOW_PROGRAM_V2_PLAN.md +463 -423
  11. package/examples/agent-fabric-v2/README.md +16 -0
  12. package/examples/agent-fabric-v2/item-child.workflow.ts +11 -0
  13. package/examples/agent-fabric-v2/map-child.workflow.ts +10 -0
  14. package/examples/agent-fabric-v2/migrate.workflow.ts +1 -1
  15. package/examples/agent-fabric-v2/run-ui-fixture.ts +48 -0
  16. package/examples/agent-fabric-v2/ui-audit.workflow.ts +28 -0
  17. package/examples/agent-fabric-v2/ui-fixture-worker.cjs +36 -0
  18. package/examples/agent-fabric-v2/visual-population.json +13 -0
  19. package/package.json +3 -1
  20. package/src/forge/_generated/releaseManifest.json +1 -1
  21. package/src/forge/_generated/releaseManifest.ts +3 -3
  22. package/src/forge/agent-fabric/codex-sdk-worker.ts +2 -0
  23. package/src/forge/agent-fabric/program-api.ts +37 -0
  24. package/src/forge/agent-fabric/program-contract.ts +89 -35
  25. package/src/forge/agent-fabric/program-dsl.ts +45 -31
  26. package/src/forge/agent-fabric/program-evidence.ts +22 -0
  27. package/src/forge/agent-fabric/program-image.ts +15 -0
  28. package/src/forge/agent-fabric/program-lock.ts +50 -0
  29. package/src/forge/agent-fabric/program-owner.ts +16 -0
  30. package/src/forge/agent-fabric/program-scheduler.ts +38 -0
  31. package/src/forge/agent-fabric/program-service.ts +275 -101
  32. package/src/forge/agent-fabric/program-store.ts +80 -55
  33. package/src/forge/agent-fabric/program-structure.ts +65 -0
  34. package/src/forge/agent-fabric/program-types.ts +21 -9
  35. package/src/forge/agent-fabric/program-view.ts +12 -0
  36. package/src/forge/agent-fabric/program-worker.ts +24 -7
  37. package/src/forge/agent-memory/mcp.ts +3 -3
  38. package/src/forge/cli/fabric.ts +2 -2
  39. package/src/forge/cli/main.ts +2 -0
  40. package/src/forge/cli/parse.ts +1 -1
  41. package/src/forge/version.ts +1 -1
@@ -0,0 +1,53 @@
1
+ # Evidências das correções Agent Fabric R2.2
2
+
3
+ Data: 07/10/2026. Fonte: working tree de C:/Users/stahl/Projects/forge, baseado em 083077bdc9aee74e81d941a67c3c38bd31d8e2d0 (forgeos 0.1.0-alpha.70). Não representa npm publicado, instalação global ou commit novo.
4
+
5
+ ## Implementação
6
+
7
+ Subworkflow agora também recebe contexto lexical no preflight e na inferência de schemas, alinhado à execução; uso de item fora de map e campo inexistente continuam rejeitados.
8
+
9
+ As seis frentes de WORKFLOW_PROGRAM_V2_CORRECTIONS.md estão implementadas: herança de contexto de subworkflow; lease compartilhado com recuperação de guardas mortos; captura por escopo/catálogo visual; conexões genéricas com schemas owner; persistência compacta/journal encadeado/no-op; templates e grafo/Mermaid. Capturas de uma tentativa são registradas atomicamente com seu resultado observado. Formato 3 usa program-runs-v3 e preserva sem carregar os diretórios anteriores.
10
+
11
+ ## Validação
12
+
13
+ FORGE_FABRIC_TEST_MODE=1 em todos os comandos das suítes determinísticas desta revisão. Nenhum provider/LLM real foi executado nessas suítes. Os executores de teste são fixtures locais ou adapters/SDK stubs. O smoke real autorizado separadamente está documentado abaixo.
14
+
15
+ - Generate, check e typecheck passaram.
16
+ - Rodada inicial: 90 testes/4 arquivos, zero falhas, incluindo fixture de 20 páginas.
17
+ - Rodada final direcionada: 43 testes/3 arquivos, zero falhas, incluindo templates/catálogo, quotas/cancelamento do filho, lock/reclaim, schema input/default, histórico compacto e fixture de empacotamento.
18
+ - Verificação framework final: 1679 aprovados, 0 falhas, 4 skips condicionais existentes; 280 arquivos/71 chunks; todos os 11 gates passaram. A última rodada inclui o novo teste lexical de subworkflow. Generate/check/typecheck e exports foram renovados depois da correção final.
19
+ - Regressão lexical adicional: 39 testes de workflows passaram, sem falhas. Os tipos de autoria incluem provas negativas via @ts-expect-error, compiladas no typecheck.
20
+
21
+ Duas tentativas anteriores de verify framework falharam: exports de adapters desatualizados e uma asserção de concorrência baseada em 20 ms; depois, timeout de 10 s da fixture de empacotamento sob carga. Adapters foram regenerados, o teste de overlap usa barreira determinística, cleanup das fixtures tem limite de 30 s e subprocesso de empacotamento tem limite de 60 s. As asserções foram preservadas; uma rodada completa com dois jobs passou; após a correção lexical final, outra rodada completa com quatro jobs também passou. Nenhum gate foi desativado.
22
+
23
+ ## Perfil determinístico
24
+
25
+ Adapter fixo, tarefas de 3 ms, uma falha em item-7 e close/reopen/resume. Cada conjunto teve uma repetição. Dados e hashes estão em FABRIC_CORRECTIONS_PROFILE.json na entrega da conversa.
26
+
27
+ | Itens | Cold ms | Recovery ms | Disk bytes | Chamadas no recovery | Irmãos intactos repetidos | Transações recovery |
28
+ |---|---:|---:|---:|---:|---:|---:|
29
+ | 12 | 1930 | 1187 | 1008335 | 1 | 0 | 11 |
30
+ | 48 | 13927 | 11727 | 9775520 | 1 | 0 | 11 |
31
+ | 96 | 38570 | 26688 | 34308647 | 1 | 0 | 11 |
32
+
33
+ Snapshot bytes escritos no cold: 766630 / 8948318 / 32700773. Envelope: 32427 / 118436 / 233156. Journal: 25875 / 94820 / 186788. Métricas incluem bytes temporários efetivamente escritos; locks não estão incluídos nas categorias de conteúdo. Pico de atividades observado: 1 nas tarefas de 3 ms; teste com barreira verifica overlap de duas roots. Não inferir throughput a partir de tarefas curtas.
34
+
35
+ ## Smoke real autorizado (2026-10-07)
36
+
37
+ Uma execução curta do ProgramRunService com o adapter Codex real, modelo gpt-6.1-sol, modo data, executor investigador somente leitura, dependências desativadas, uma tentativa e timeout de 60 s. Repositório Git temporário com um único arquivo; resultado persistido {"ok":true}, status completed, arquivo original intacto. Duração: 28.979 ms. Uso informado pelo SDK: 20.421 tokens de entrada, 0 em cache, 15 de saída. A entrada foi maior que o esperado apesar do prompt mínimo; não houve nova chamada para otimização.
38
+
39
+ Run: program-ec04371b16d7e8f844054d5b11ed011e. Thread Codex: 01a117e1-0e51-7261-ab3a-3e0cacd02432. Uma tentativa owner-visible concluída. O teste comprova o caminho básico owner/scheduler/workspace/SDK/schema/persistência; não comprova qualidade dos modelos, fluxos complexos, pixels de UI ou superioridade empírica sobre Claude DW. A restrição anterior de zero LLM aplica-se às suítes determinísticas; somente este smoke foi autorizado separadamente.
40
+
41
+ ## Limites da evidência
42
+
43
+ ## Gate de publicação Linux e correção concorrente
44
+
45
+ A primeira tentativa de publicação da alpha.71 (GitHub Actions 37676855215, commit bf77032f) foi bloqueada: 1.841 testes passaram, 5 tiveram skip condicional e um falhou. A corrida ocorria quando um replanejamento aditivo invalidava a versão semântica durante a persistência do gate; o erro "Gate inputs changed" interrompia o programa antes do recálculo. Não houve publicação dessa tentativa.
46
+
47
+ O runtime agora distingue a invalidação AF_PROGRAM_REVISED de falhas de execução, aguarda os irmãos e recalcula controles somente enquanto o programa segue executando com um plano diferente. Uma falha real de irmão tem prioridade e continua bloqueando conclusão. O teste usa barreira explícita antes do commit do gate e cobre ambos os casos, sem dependência de timing ou chamadas LLM.
48
+
49
+ ## Limites do runtime
50
+
51
+ A validação direcionada também expôs uma corrida de shutdown: o ciclo era removido de active antes de terminar a leitura assíncrona do finalizador. close agora aguarda esse finalizador antes de liberar o owner, e um teste com barreira mantém a leitura pendente para verificar a retenção do ciclo. Nenhuma dessas correções usa chamadas LLM.
52
+
53
+ Snapshots completos ainda dominam armazenamento e custo computacional; a otimização remove duplicação/journal acumulado e writes sem mudança, mas não torna o custo linear. Tempos são locais sob carga e não comparam Claude DW. Não há medida de qualidade/custo/produtividade dos modelos. Catálogo visual delimita casos exigidos; header e metadata não comprovam pixels/estado reais. WebP continua limitado a VP8X. Commands são cooperativos; não há sandbox forte geral. Durabilidade continua local, sem exactly-once externo, GC automático ou serviço distribuído.
@@ -1,109 +1,49 @@
1
- # Workflow program v2 verification evidence
2
-
3
- Date: 2026-10-07. Baseline: c8dfdf0c0c3cd6610bab68b4872ab9dcf8d4214c.
4
- Release target: forgeos 0.1.0-alpha.70. The release workflow binds its exact pushed SHA.
5
-
6
- ## Scope established locally
7
-
8
- Focused suites cover finite AST lowering and schema constraints, typed references,
9
- 80-item coverage/seals, owner-issued receipts, acceptance/candidate linkage, bounded
10
- repair and restart, event targeting, barriers/generations, data-only completion,
11
- immutable history, byte budgets and uncertain publication. Actual command-process
12
- fixtures cover two independent files, three successive same-file deltas, diamond
13
- composition, independently identical conflicting patches, authenticated owner
14
- transport and concurrent apply idempotency. Existing v1 SDK tests are retained.
15
-
16
- The initial strict framework TestGraph completed all 277 files/71 chunks with test
17
- status pass. The overall verify invocation failed on stale generic/codex adapter
18
- exports, which were then regenerated. Final release gates must be read from their
19
- actual local/CI outcomes; that initial adapter failure is not represented as a pass.
20
-
21
- ## Independent implementation review
22
-
23
- A read-only subagent independently reproduced and verified fixes for forged receipts,
24
- input/result contracts, persistent counters, late worker outcomes, old additive gates,
25
- failed repairs masked by trailing values, omitted item contributions, retired branch
26
- ledgers and static-binding byte expansion. It ran 50 tests, then 6 focused delta tests,
27
- with zero failures. No remaining reproduced blocker was identified in that scope.
28
- This is implementation review of a bounded alpha, not complete plan/product acceptance.
29
-
30
- ## Real Codex SDK pilot
31
-
32
- Started 2026-10-07T13:01:42.961Z; completed 13:02:22.229Z.
33
- Model gpt-6.1-sol, one attempt, outcome completed, status completed.
34
- Thread 01a11674-ab47-7b81-88b7-d5137124d19e.
35
- A typed readonly activity returned the exact fixture answer fabric-v2-pilot; the source
36
- input was unchanged. The reviewer inspected the persisted record, result artifact,
37
- source and nine transitions without spending a second model call.
38
- This does not establish SDK migration/review/application, production or App-closed
39
- operation. Reproduction is explicitly opt-in:
40
-
41
- node --import tsx scripts/pilot-fabric-program-sdk.mjs --yes --model MODEL --output REPORT
42
-
43
- ## Bounded recovery benchmark
44
-
45
- Three deterministic local runs: 80 items, concurrency four, two observed infrastructure
46
- failures, owner close/reopen/resume. Every run produced 80 results in 82 adapter calls,
47
- retaining 78 successful outputs. The pure fixture adapter explicitly attests reusable
48
- inputs. A procedural reference also completed in 82 calls; it has no equivalent disk
49
- journal, worker clones or models. The harness does not run Claude Code.
50
-
51
- | Observed mean | Fabric | Procedural reference |
52
- | --- | ---: | ---: |
53
- | Full elapsed | 49.276 s | 0.164 s |
54
- | Recovery elapsed | 29.333 s | not equivalent |
55
- | Retained disk | about 58.7 MB | no durable journal |
56
-
57
- There were 81 materialized operations and 897 transitions per Fabric run. These results
58
- show significant persistence overhead and bounded recovery correctness, not speed
59
- superiority, actual token/cost savings or maximum-scale acceptance.
60
- Reproduction: node --import tsx scripts/benchmark-fabric-programs.mjs --output REPORT.
61
-
62
- ## Remaining acceptance
63
-
64
- Independent live branch scheduling, semantic inventory, extensible recipe registries,
65
- SDK output reuse, automatic GC, filesystem power-loss durability, maximum-scale tests,
66
- full SDK coding workflow and comparison against actual Claude Code remain unestablished.
67
- EasyGrow, production, human acceptance and native hook completion retain their earlier
68
- separate gates. The release includes the executable example and contract documentation.
69
-
70
- ## Final local release gates
71
-
72
- After regenerating the stale adapters, verify framework passed all 11 steps, with the
73
- entire 277-file/71-chunk TestGraph, no skipped gates and elapsed 508.643 s. The warning
74
- about PGlite RLS being structural is retained; Postgres authoritative proof belongs to
75
- release CI. Focused v2+SDK suites passed 63 tests/210 expectations. After the separate
76
- template dependency adjustment, template/audit policy suites passed 8 tests/47 expectations.
77
-
78
- The eight-target dependency gate passed after overriding the Nuxt template's devtools
79
- to 4.0.0-beta.4, removing its vulnerable simple-git dependency. An attempted simple-git
80
- 4.0.2 override passed audit but failed actual template typechecking because the old
81
- consumer imported its removed default export; that attempt was discarded. The accepted
82
- devtools adjustment passed real npm installation, generation, dev-once and smoke verification
83
- including typechecking in a fresh Nuxt template. Existing two scoped, expiring high-severity
84
- advisory exceptions were preserved, with no new exception. This is not a claim of zero
85
- advisories across the generated Nuxt dependency graph.
86
-
87
- The first packed-package smoke passed installation, CLI, repository maps, app generation/
88
- verification, native hook runner smoke, studio open and wrapper scaffold. A second run
89
- adds actual installed v2 DSL/example validation; its outcome and exact release CI SHA
90
- are recorded in the user-facing delivery report after execution.
91
-
92
- The final packed smoke passed, including importing the installed v2 authoring module
93
- and lowering/validating the shipped five-step example against its registry. The local
94
- package reported version 0.1.0-alpha.70. This smoke ran from an actual npm tarball,
95
- not a dry-run or a source-only import.
96
-
97
- ## CI correction before publication
98
-
99
- The first exact-SHA release run 37630439335 was blocked before publication: 1797 tests
100
- passed, five platform/opt-in tests were skipped, and the pre-existing POSIX exporter
101
- cleanup test failed. SIGKILL had been requested without waiting for group termination.
102
- The fix observes the owned detached process group with signal zero until ESRCH, bounded
103
- at five seconds; unknown cleanup remains an error and preserves its scratch directory.
104
- A deterministic regression fixture models two still-live observations after the signal.
105
- Linux/WSL runtime suites passed 17 tests/74 expectations; Windows runtime suites passed
106
- 16 tests/72 expectations, with the new POSIX-only case separately skipped on Windows.
107
- The independent reviewer approved the code/error-path delta (SHA256
108
- 563B878677FDE2BC82539AEB5020D84F72DCECE0FDB6AB19B94F0EE69D476997).
109
- This is cooperative process-group cleanup, not universal process-tree containment.
1
+ # Evidências: Agent Fabric workflows R2.1
2
+
3
+ Data: 2026-10-07. Base do trabalho: 083077bdc9aee74e81d941a67c3c38bd31d8e2d0, forgeos 0.1.0-alpha.70. Implementação de desenvolvimento; não é uma publicação npm. O usuário dispensou compatibilidade legada e proibiu testes reais com LLM. Nenhum piloto SDK/modelo foi executado nesta implementação; relatos de pilotos anteriores não são evidência da revisão atual.
4
+
5
+ > Registro da implementação R2.1. A revisão posterior R2.2 corrige herança de subworkflow/locks/capturas e muda o formato de persistência; consulte WORKFLOW_PROGRAM_V2_CORRECTIONS.md e WORKFLOW_PROGRAM_V2_CORRECTIONS_EVIDENCE.md. Os números abaixo são históricos desta rodada R2.1.
6
+
7
+ ## Núcleo entregue
8
+
9
+ DSL/IR operatorVersion 2 com cinquenta construtores de autoria e quinze controles. Grafo com dependências de dados/after, sequence/parallel e Blocks explícitos. Quotas de atividades em owner/run/scopes, reserva/debit/queue persistidos, owner exclusivo, waiting e deadlines, completed íntegro reutilizado antes de prepare, replan seletivo e incerteza conservadora. Contratos owner por item/final, evidência binária imutável, review/checks/capturas ligados ao candidato, ledger local, compose, aceitação final integral e aprovação humana separada de apply. Catálogo API e exemplo atuais em docs/agent-fabric-programs.md e examples/agent-fabric-v2/ui-audit.workflow.ts. Skill distribuída atualizada.
10
+
11
+ ## Verificações focadas
12
+
13
+ Uma execução focada completou 93 testes em cinco arquivos, zero falhas e 311 assertions: program-v2, program-v2-process, program-workflows, program-ui-fixture e codex-sdk-worker. SDK usa factories simuladas. Checks adicionais cobrem tipos/results dentro de Blocks/map e callbacks tardios de SDK: o owner antigo não altera o sucessor. O typecheck passou, incluindo o mesmo exemplo TS compilado/lowered e uma prova negativa de refs nominais. Testes de commands/apply executam processos Node determinísticos e Git temporário, não modelos.
14
+
15
+ A verificação ampla inicial encontrou exports de adapters stale, uma expectativa de teste que assumia ordem de receipts com IDs aleatórios e um timeout isolado na fixture antiga de limpeza de pacote. Exports foram regenerados; expectativa passou a localizar conteúdo/candidato sem assumir ordem; a fixture antiga passou isoladamente sem alteração. Um teste novo de deadline foi ajustado para estabelecer primeiro reservas incertas com prazo normal e só então exercitar a fila bloqueada com prazo curto; assim não assume throughput do host durante a admissão. A execução ampla final passou: onze gates, 279 arquivos/71 chunks, 1667 testes e zero falhas; nenhum gate pulado. O callback tardio recebeu adicionalmente 43 testes focados e typecheck após sua alteração; outputs de geração/adapters foram reconferidos no fechamento. O primeiro resultado não é representado como sucesso.
16
+
17
+ ## P2: fixture UI
18
+
19
+ Vinte páginas HTML locais com três defeitos conhecidos, executores command determinísticos e owner inventory: exatamente três implementações, 43 capturas (20 iniciais + 3 após correção + 20 finais), 20 capturas frescas finais e 21 obrigações finais satisfeitas. Destino preservado porque o exemplo não chama apply. Uma fixture separada usou Edge headless sobre uma página HTML local e produziu três screenshots reais (baseline, candidato corrigido e final), uma implementação, duas obrigações finais e zero LLM. Nenhuma prova de qualidade visual/modelo é inferida dessas fixtures.
20
+
21
+ ## P3: profiling determinístico
22
+
23
+ Script reproduzível: scripts/benchmark-fabric-workflows.ts. Dataset congelado: doze itens, delay simulado 3 ms, uma falha em item-7, concorrência permitida quatro, três repetições com owner close/reopen/resume. Digest sha256:58c9295b62663693d909726bfef8e2ae3779d20507caabfd9161b705f46e3412.
24
+
25
+ | Repetição | Inicial ms | Recuperação ms | Attempts | Calls na recuperação | Calls intactos repetidos | Disk bytes |
26
+ |---|---:|---:|---:|---:|---:|---:|
27
+ | 1 | 1389 | 1124 | 13 | 1 | 0 | 2141322 |
28
+ | 2 | 1343 | 1224 | 13 | 1 | 0 | 2141031 |
29
+ | 3 | 1374 | 1147 | 13 | 1 | 0 | 2141472 |
30
+
31
+ As tarefas simuladas de 3 ms apresentaram pico observado um devido à persistência; não se confunde limite quatro com overlap efetivo. Métricas incluem transações/tempo/bytes por owner e retained disk. Serialização por run resolveu contenção; validação de definitions é memoizada por digest, mantendo checks de envelope/artifact. Não há comparação de velocidade com datasets antigos diferentes, benchmark Claude, custo/token real ou superioridade de produto comprovada.
32
+
33
+ ## Rastreabilidade da matriz
34
+
35
+ | Cenários | Evidência técnica |
36
+ |---|---|
37
+ | T01–T09, T11–T16 | program-workflows + program-v2: grafo/controle/scopes, eventos/deadlines, reprise, falhas/reservas, artefatos e replan |
38
+ | T10 | aprovação/declínio vinculados a candidato; owner gate rejeita receipt fabricado; nenhuma autorização por dado de worker |
39
+ | T17, T22, T34, T42 | intent/debits persistidos, repair limitado/restart, outputs sem observação, gap de parent commit, SDK stub e fuse real-factory |
40
+ | T18–T23, T26, T36–T37 | UI fixtures: imagem inválida/ambiente errado/cobertura incompleta/check omitido/final completo/regressão final, zero-edits quando correto |
41
+ | T24–T25, T27–T29 | commands reais em Git temporário: conflitos, diamond/beforeimages, gate/candidate, apply idempotente/uncertain, readonly sem autoridade |
42
+ | T30–T31 | finite AST, tipos/schema, IDs/ciclos, import/callback/I/O rejeitados, bounded expansion |
43
+ | T32 | sandbox/capabilities e defaults SDK verificados com factory simulada; isolamento command cooperativo declarado, sem promessa de controle de agentes internos |
44
+ | T33 | revogação live bloqueia novo dispatch; histórico completado continua legível; apply revalida owner |
45
+ | T38–T40 | quorum explícito/settled, collect-all diagnóstico, NFC/encoding/order e user data separada de outcome |
46
+ | T41 | owner exclusivo, restart incerto e reconstrução/liberação de reservas; filesystem power-loss e todos os interleavings não são alegados |
47
+ | T35, T43 | Fora do núcleo: não existe GC/resolução automática; nenhuma extensão foi ativada |
48
+
49
+ Limites: sem cache cross-run, distributed execution, live fencing local, race/streaming ilimitado, GC/resolução automática ou múltiplos harnesses completos. Durabilidade é local com owner vivo; nem qualidade LLM, produção, App fechado ou superioridade sobre Claude DW foram verificados. Testes de modelos dependem de autorização futura e não são gates desta entrega.