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.
- package/.agents/skills/forge-agent-fabric/SKILL.md +10 -1
- package/AGENTS.md +1 -1
- package/CHANGELOG.md +6 -0
- package/docs/agent-fabric-programs.md +151 -168
- package/docs/agent-fabric.md +4 -6
- package/docs/architecture/agent-fabric/WORKFLOW_PROGRAM_V2_ADR.md +81 -41
- package/docs/architecture/agent-fabric/WORKFLOW_PROGRAM_V2_CORRECTIONS.md +39 -0
- package/docs/architecture/agent-fabric/WORKFLOW_PROGRAM_V2_CORRECTIONS_EVIDENCE.md +53 -0
- package/docs/architecture/agent-fabric/WORKFLOW_PROGRAM_V2_EVIDENCE.md +49 -109
- package/docs/architecture/agent-fabric/WORKFLOW_PROGRAM_V2_PLAN.md +463 -423
- package/examples/agent-fabric-v2/README.md +16 -0
- package/examples/agent-fabric-v2/item-child.workflow.ts +11 -0
- package/examples/agent-fabric-v2/map-child.workflow.ts +10 -0
- package/examples/agent-fabric-v2/migrate.workflow.ts +1 -1
- package/examples/agent-fabric-v2/run-ui-fixture.ts +48 -0
- package/examples/agent-fabric-v2/ui-audit.workflow.ts +28 -0
- package/examples/agent-fabric-v2/ui-fixture-worker.cjs +36 -0
- package/examples/agent-fabric-v2/visual-population.json +13 -0
- package/package.json +3 -1
- package/src/forge/_generated/releaseManifest.json +1 -1
- package/src/forge/_generated/releaseManifest.ts +3 -3
- package/src/forge/agent-fabric/codex-sdk-worker.ts +2 -0
- package/src/forge/agent-fabric/program-api.ts +37 -0
- package/src/forge/agent-fabric/program-contract.ts +89 -35
- package/src/forge/agent-fabric/program-dsl.ts +45 -31
- package/src/forge/agent-fabric/program-evidence.ts +22 -0
- package/src/forge/agent-fabric/program-image.ts +15 -0
- package/src/forge/agent-fabric/program-lock.ts +50 -0
- package/src/forge/agent-fabric/program-owner.ts +16 -0
- package/src/forge/agent-fabric/program-scheduler.ts +38 -0
- package/src/forge/agent-fabric/program-service.ts +275 -101
- package/src/forge/agent-fabric/program-store.ts +80 -55
- package/src/forge/agent-fabric/program-structure.ts +65 -0
- package/src/forge/agent-fabric/program-types.ts +21 -9
- package/src/forge/agent-fabric/program-view.ts +12 -0
- package/src/forge/agent-fabric/program-worker.ts +24 -7
- package/src/forge/agent-memory/mcp.ts +3 -3
- package/src/forge/cli/fabric.ts +2 -2
- package/src/forge/cli/main.ts +2 -0
- package/src/forge/cli/parse.ts +1 -1
- 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
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
##
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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.
|