Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
376 commits
Select commit Hold shift + click to select a range
0864375
Skip providers with no small model when picking a small default
brynary Jul 27, 2026
c812274
Show live status for parallel branches
Jul 27, 2026
88ca4b1
Teach the run title model the title shape we want
brynary Jul 27, 2026
713d340
Render the run title prompt with Jinja instead of string replacement
brynary Jul 27, 2026
24b0576
Record fabro-template as a fabro-server dependency in Cargo.lock
brynary Jul 27, 2026
7950441
Give all_spec_routes_are_routable a 30s timeout that actually applies
brynary Jul 27, 2026
99dd771
Keep server tests off the developer's real ~/.fabro/storage
brynary Jul 27, 2026
9e744f8
Keep server tests off the developer's real ~/.fabro/storage
brynary Jul 27, 2026
b97b253
Drop the special-case timeout for all_spec_routes_are_routable
brynary Jul 27, 2026
a6282d0
Revert "Give all_spec_routes_are_routable a 30s timeout that actually…
brynary Jul 27, 2026
6bcd730
feat(workflow): interpolate goal, inputs, and vars in command scripts
brynary Jul 27, 2026
e54fef7
refactor(auth): remove EnvCredentialSource and make the run vault req…
brynary Jul 28, 2026
f0a7423
refactor(config): stop resolving {{ env.* }} in interpolated config
brynary Jul 28, 2026
8cc7114
Bump version to 0.308.0-nightly.0
fabro-releases[bot] Jul 28, 2026
813e73a
fix(workflow): validate outermost custom output object
brynary Jul 28, 2026
d251044
Retry the sandbox clone when GitHub token replication lags
brynary Jul 28, 2026
33b94d8
Support provider-qualified fallback selectors
brynary Jul 28, 2026
46e8d92
Give the run docks a shared collapsible shell
brynary Jul 28, 2026
7906af3
fix(sandbox): reactivate stopped run sandboxes
brynary Jul 28, 2026
010c8d5
Add structured review targets to human gates
brynary Jul 28, 2026
80f3210
fix(sandbox): unpause paused Docker containers
brynary Jul 28, 2026
cc57a73
Merge pull request #662 from fabro-sh/perf/test-storage-root-off-real…
brynary Jul 28, 2026
465bdd6
Redirect test storage through with_storage_override
brynary Jul 28, 2026
dc79da0
Clean up size chip rendering and tests
brynary Jul 28, 2026
8592a34
refactor: collapse the split validation paths
brynary Jul 28, 2026
04c931e
Simplify edge-only node validation
brynary Jul 28, 2026
96f70a9
fix(timing): simplify live timing projections
brynary Jul 28, 2026
d6ac910
refactor: reuse ModelResolutionTransform instead of a parallel option…
brynary Jul 28, 2026
a10ffb0
Merge pull request #654 from fabro-sh/fix/reject-edge-only-nodes
brynary Jul 28, 2026
c5d3345
Merge pull request #651 from fabro-sh/fix/offline-validation-catalog-…
brynary Jul 28, 2026
6bd6712
Merge pull request #657 from fabro-sh/feat/runs-list-size-tooltip
brynary Jul 28, 2026
09ef90b
refactor: pass the catalog by value and correct the RenderMode docs
brynary Jul 28, 2026
ee89caf
Merge pull request #647 from fabro-sh/fix/live-active-time-accumulation
brynary Jul 28, 2026
4037234
fix(tool): keep fabro_run_create validation catalog-free
brynary Jul 28, 2026
acff084
refactor: simplify stage billing reuse
Jul 28, 2026
0681d1e
docs: clarify run-create undefined variable handling
brynary Jul 28, 2026
1b98752
Simplify artifact version history
brynary Jul 28, 2026
c083fa5
Merge pull request #658 from fabro-sh/feat/stage-model-popover-billing
brynary Jul 28, 2026
34656aa
Merge pull request #672 from fabro-sh/refactor/validation-catalog-cle…
brynary Jul 28, 2026
f4384e9
Merge pull request #659 from fabro-sh/feat/file-primary-artifacts-view
brynary Jul 28, 2026
73f48ee
refactor: simplify publish pipeline and collapse duplicated stage errors
brynary Jul 28, 2026
8e066ec
refactor: remove duplicated review target rendering and validation
brynary Jul 28, 2026
3d8cf48
fix(web): harden collapsible run docks
brynary Jul 28, 2026
c133542
fix: stop a pipe in a link label from splitting Slack link markup
brynary Jul 28, 2026
fa6f7e5
fix(workflow): verify remote head before generating PR content, toler…
brynary Jul 28, 2026
9660442
Merge remote-tracking branch 'origin/main' into codex/pr669-merge-mai…
brynary Jul 28, 2026
e21e6bc
refactor(sandbox): harden activation recovery
Jul 28, 2026
8a41d46
Simplify model reference parsing and catalog indexing
brynary Jul 28, 2026
ca54231
Merge pull request #669 from fabro-sh/feat/run-dock-collapse-and-clea…
brynary Jul 28, 2026
b294251
Merge the duplicate selector catalog tests
brynary Jul 28, 2026
450a170
Merge pull request #670 from fabro-sh/fix/sandbox-activate-before-access
brynary Jul 28, 2026
8771c97
Add Modal LLM provider
brynary Jul 28, 2026
7bacd4c
refactor(workflow): scan for outermost JSON objects everywhere
Jul 28, 2026
4727ee8
Harden sandbox clone retries
brynary Jul 28, 2026
9f32e14
Merge pull request #667 from fabro-sh/fix/retry-transient-sandbox-clone
brynary Jul 28, 2026
4ab959f
Merge pull request #666 from fabro-sh/fix/output-schema-outermost-object
brynary Jul 28, 2026
e6cf174
Merge origin/main into feat/human-review-target
brynary Jul 28, 2026
eb2d612
Merge pull request #671 from fabro-sh/feat/human-review-target
brynary Jul 28, 2026
1af6a3d
fix: stop inferring a final commit SHA, route slashed branches in the…
brynary Jul 28, 2026
2103e3f
Qualify colon model references against the provider registry
brynary Jul 28, 2026
1aa7a15
Merge pull request #652 from fabro-sh/fix/publish-failures
brynary Jul 28, 2026
df0bd58
Merge remote-tracking branch 'origin/main' into fix/small-default-ski…
brynary Jul 28, 2026
e91343b
refactor: address run title review findings
brynary Jul 28, 2026
b04684a
fix(workflow): harden script value interpolation
Jul 28, 2026
8f9b36c
fix(test): propagate storage setup errors
brynary Jul 28, 2026
690ddd2
Fix live parallel branch refresh and simplify branch rendering
brynary Jul 28, 2026
81d762a
Merge remote-tracking branch 'origin/main' into feat/script-value-int…
Jul 28, 2026
6ad8ba2
Stop hiding late-starting parallel branches
brynary Jul 28, 2026
6226c8c
fix: address env interpolation review findings
brynary Jul 28, 2026
b19dda6
Merge pull request #661 from fabro-sh/fix/small-default-skips-provide…
brynary Jul 28, 2026
239490a
Merge pull request #664 from fabro-sh/feat/script-value-interpolation
brynary Jul 28, 2026
9d828a8
Merge remote-tracking branch 'origin/main' into refactor/remove-env-i…
brynary Jul 28, 2026
503e21f
Merge origin/main into feat/parallel-branch-live-status
brynary Jul 28, 2026
0022838
Merge remote-tracking branch 'origin/main' into refactor/remove-env-i…
brynary Jul 28, 2026
f8325c5
Let the first separator decide the model reference form
brynary Jul 28, 2026
e1805f4
docs: clarify hook variable sensitivity
brynary Jul 28, 2026
f91e511
Describe the parallel branch fields in generated clients
brynary Jul 28, 2026
8e4251b
refactor(llm): simplify the Modal provider tests and fixtures
brynary Jul 28, 2026
6c516ec
Merge pull request #660 from fabro-sh/feat/parallel-branch-live-status
brynary Jul 28, 2026
9776280
Merge pull request #668 from fabro-sh/feat/provider-qualified-fallbacks
brynary Jul 28, 2026
b611d94
Merge pull request #673 from fabro-sh/feat/modal-llm-provider
brynary Jul 28, 2026
68b90cc
fix(agent): honor the TaskOutput schema defaults
brynary Jul 28, 2026
fa85bc4
Merge pull request #643 from fabro-sh/feat/claude-5-profile
brynary Jul 28, 2026
f4c0986
Merge origin/main into refactor/remove-env-interpolation
brynary Jul 28, 2026
5396565
Bump version to 0.308.0-nightly.1
fabro-releases[bot] Jul 28, 2026
ee9189d
Reuse existing helpers in the for_each fan-out
brynary Jul 28, 2026
4efaf5c
Let --dry-run walk a for_each fan-out
brynary Jul 28, 2026
826c8be
Merge pull request #665 from fabro-sh/refactor/remove-env-interpolation
brynary Jul 28, 2026
17b3223
Neutralize runtime for_each labels before display
brynary Jul 28, 2026
a369ea7
Merge remote-tracking branch 'origin/main' into feat/for-each-item-in…
brynary Jul 29, 2026
8d14b54
Bound for_each fan-out memory
brynary Jul 29, 2026
d5c3436
Drop local plan drafts committed by mistake
brynary Jul 29, 2026
000a253
Merge pull request #653 from fabro-sh/feat/for-each-item-injection
brynary Jul 29, 2026
d8434e7
Bump version to 0.309.0-nightly.0
fabro-releases[bot] Jul 29, 2026
0e2ee78
fix(auth): serialize CLI token refreshes across processes
brynary Jul 29, 2026
de7bb61
Remove nonfunctional run agent permissions setting
brynary Jul 29, 2026
5d72f9a
Add context-sourced command stdin
brynary Jul 29, 2026
cb24f47
Merge remote-tracking branch 'origin/main' into feat/infer-command-no…
brynary Jul 29, 2026
d37fc00
fix(workflow): align inferred command behavior
brynary Jul 29, 2026
8a985c2
Merge pull request #656 from fabro-sh/feat/infer-command-node-from-sc…
brynary Jul 29, 2026
0eda219
Simplify stdin_source plumbing after review
brynary Jul 29, 2026
cd6a614
Make stdin_source validation message handler-neutral
brynary Jul 29, 2026
6e2a2ac
Merge remote-tracking branch 'origin/main' into feat/command-stdin-so…
brynary Jul 29, 2026
92db166
Merge pull request #677 from fabro-sh/feat/command-stdin-source
brynary Jul 29, 2026
1855362
Bump version to 0.309.0-nightly.1
fabro-releases[bot] Jul 29, 2026
1575cc1
Stop requesting workflow write permission
swerner Jul 29, 2026
18f07f4
Merge pull request #679 from swerner/fix/remove-workflows-write-permi…
brynary Jul 29, 2026
854f71f
Bump version to 0.309.0-nightly.2
fabro-releases[bot] Jul 29, 2026
5f040d3
Fix artifacts from repeated stage visits
brynary Jul 29, 2026
8fba42e
fabro(01KYQMV1VW6139EGNHEM1RGF2G): toolchain (succeeded)
Jul 29, 2026
d23a9dd
fabro(01KYQMV1VW6139EGNHEM1RGF2G): preflight_compile (succeeded)
Jul 29, 2026
ed59858
fabro(01KYQMV1VW6139EGNHEM1RGF2G): preflight_lint (succeeded)
Jul 29, 2026
4746d14
fabro(01KYQMV1VW6139EGNHEM1RGF2G): implement (succeeded)
Jul 29, 2026
0f2b665
Address artifact review feedback
brynary Jul 29, 2026
1e5dc68
fix(workflow): pass parent tool hooks to subagent sessions
brynary Jul 29, 2026
47fcf91
Merge pull request #680 from fabro-sh/fix/repeated-stage-artifacts
brynary Jul 29, 2026
456b82e
Merge pull request #681 from fabro-sh/fix/subagent-tool-hooks
brynary Jul 29, 2026
9ef9665
feat(workflow): raise the stdin_source ceiling to 30 MiB
brynary Jul 29, 2026
81deda3
Merge pull request #682 from fabro-sh/feat/raise-stdin-source-ceiling
brynary Jul 29, 2026
692301d
feat(workflow): support comments in model stylesheets
brynary Jul 29, 2026
e0f73f9
feat(workflow): make model fallback chains portable
brynary Jul 29, 2026
6ce5ea7
fabro(01KYQMV1VW6139EGNHEM1RGF2G): simplify_fable (succeeded)
Jul 29, 2026
a942334
fabro(01KYQMV1VW6139EGNHEM1RGF2G): simplify_sol (succeeded)
Jul 30, 2026
5f46acd
Merge remote-tracking branch 'origin/main' into fabro/run/01KYQMV1VW6…
Jul 30, 2026
d481542
fabro(01KYQMV1VW6139EGNHEM1RGF2G): verify (failed)
Jul 30, 2026
84d3ad5
fabro(01KYQMV1VW6139EGNHEM1RGF2G): fixup (succeeded)
Jul 30, 2026
22e869c
fabro(01KYQMV1VW6139EGNHEM1RGF2G): verify (succeeded)
Jul 30, 2026
af9aa53
fix(graphviz): parse whitespace-separated node classes
brynary Jul 30, 2026
8558615
refactor(graphviz): parse node classes in one place
brynary Jul 30, 2026
f932a07
refactor(graphviz): simplify stylesheet comment stripping
brynary Jul 30, 2026
01c4a4a
test(graphviz): table-drive the class separator cases
brynary Jul 30, 2026
48fd09a
refactor(workflow): simplify fallback chain resolution
brynary Jul 30, 2026
bff5190
Merge pull request #683 from fabro-sh/feat/model-stylesheet-comments
brynary Jul 30, 2026
727cd52
fix(types): trim class names in Node::add_class
brynary Jul 30, 2026
b5885b1
Merge pull request #686 from fabro-sh/fix/space-separated-node-classes
brynary Jul 30, 2026
8a597ca
fix(workflow): report the real cause when a fallback cannot resolve
brynary Jul 30, 2026
381f603
Bump version to 0.310.0-nightly.0
fabro-releases[bot] Jul 30, 2026
2efcc72
Merge pull request #684 from fabro-sh/feat/portable-model-fallbacks
brynary Jul 30, 2026
69d4482
Bump version to 0.310.0-nightly.1
fabro-releases[bot] Jul 30, 2026
2cb796c
ci: raise macOS file descriptor limit for release tests
brynary Jul 30, 2026
e80be78
chore(workflows): use Claude Opus
brynary Jul 30, 2026
4ab090c
Bump version to 0.310.0-nightly.2
fabro-releases[bot] Jul 30, 2026
ba82656
feat: add model-keyed fallback policies
brynary Jul 30, 2026
e6eb36f
refactor: simplify model-keyed fallback internals
brynary Jul 30, 2026
84c1545
docs: state the from-route semantics of agent.failover events
brynary Jul 30, 2026
d4119ce
fix: keep stored run events from older releases deserializable
brynary Jul 30, 2026
38a609f
Merge pull request #689 from fabro-sh/feat/model-keyed-fallbacks
brynary Jul 30, 2026
6a1ec11
Fix forked run sandbox initialization
brynary Jul 30, 2026
e072dda
Bump version to 0.310.0-nightly.3
fabro-releases[bot] Jul 30, 2026
a0de8f4
fix: materialize a fresh sandbox when resuming a forked run
brynary Jul 30, 2026
5eb36d1
Merge pull request #690 from fabro-sh/fix/fork-resume-materializes-sa…
brynary Jul 30, 2026
f098fb9
fix(llm): decode Modal reasoning token usage
brynary Jul 30, 2026
14fc5d4
Bump version to 0.311.0-nightly.0
fabro-releases[bot] Jul 31, 2026
5208399
fix(workflow): pause timeouts for human input
brynary Jul 31, 2026
8b51069
feat: reuse completed subagent sessions
brynary Jul 31, 2026
a2b64de
fix(model): prioritize Modal over Kimi
brynary Jul 31, 2026
d4cefb1
fix(web): update Modal and OpenRouter logos
brynary Jul 31, 2026
24f9ac6
refactor(model): rename Kimi provider to Moonshot
brynary Jul 31, 2026
fd55ff0
fix(model): prefer MOONSHOT_API_KEY
brynary Jul 31, 2026
1c9ca55
fix: expose output schemas to agents
Jul 31, 2026
900396e
fix(daytona): accept newer permission scopes
brynary Jul 31, 2026
e969464
Fix canceled parallel stage duration
brynary Jul 31, 2026
8881bca
Log run event persistence failures as errors
brynary Jul 31, 2026
e8c4020
Collapse the steering bar by default and expand it on bar click
brynary Jul 31, 2026
8bae353
fix(models): point DeepSeek aliases to V4 Flash
Jul 31, 2026
0afd3a4
feat(models): add portable DeepSeek aliases to Fireworks
Jul 31, 2026
7e6d758
fix(llm): classify exceeded quota errors
brynary Jul 31, 2026
8864e0f
feat(models): refresh DeepSeek V4 Flash metadata
Jul 31, 2026
f613821
feat(llm): add direct DeepSeek provider
Jul 31, 2026
76dae56
feat(reasoning): expose DeepSeek effort controls
Jul 31, 2026
1016f99
chore(models): pin DeepSeek agent profile
Jul 31, 2026
40391ac
fix(models): use exact DeepSeek context window
Jul 31, 2026
799fac1
style(models): group DeepSeek price digits
Jul 31, 2026
f868734
Fix stale MCP servers after upgrades
brynary Jul 31, 2026
980aabc
feat: download latest artifacts as zip
brynary Jul 31, 2026
bf347b3
fabro(01KYQN78K19NY7PNSCDYP6CG9G): toolchain (succeeded)
Jul 29, 2026
ffc2632
fabro(01KYQN78K19NY7PNSCDYP6CG9G): preflight_compile (succeeded)
Jul 29, 2026
0815f9f
fabro(01KYQN78K19NY7PNSCDYP6CG9G): preflight_lint (succeeded)
Jul 29, 2026
ac6e3ce
fabro(01KYQN78K19NY7PNSCDYP6CG9G): implement (succeeded)
Jul 29, 2026
76f61f1
fabro(01KYQN78K19NY7PNSCDYP6CG9G): simplify_fable (succeeded)
Jul 30, 2026
bca63e7
fabro(01KYQN78K19NY7PNSCDYP6CG9G): simplify_sol (succeeded)
Jul 30, 2026
61764bf
fabro(01KYQN78K19NY7PNSCDYP6CG9G): verify (failed)
Jul 30, 2026
4b56aa4
fabro(01KYQN78K19NY7PNSCDYP6CG9G): fixup (succeeded)
Jul 30, 2026
8282581
fabro(01KYQN78K19NY7PNSCDYP6CG9G): verify (succeeded)
Jul 30, 2026
913cb19
Sanitize Bedrock tool identifiers during encoding
swerner Jul 31, 2026
f75c7a1
fix: make structured output repair errors actionable
brynary Jul 31, 2026
cb45e17
Merge pull request #704 from fabro-sh/feat/deepseek-v4-flash
brynary Jul 31, 2026
9ef8742
Merge pull request #687 from fabro-sh/fabro/run/01KYQN78K19NY7PNSCDYP…
brynary Jul 31, 2026
594bf6e
refactor(llm): simplify Bedrock tool sanitization internals
swerner Jul 31, 2026
5111f0e
Merge pull request #707 from swerner/fix/bedrock-tool-sanitization
brynary Jul 31, 2026
d0ebc85
Bump version to 0.312.0-nightly.0
fabro-releases[bot] Aug 1, 2026
bf913ec
Merge pull request #685 from fabro-sh/fabro/run/01KYQMV1VW6139EGNHEM1…
brynary Aug 1, 2026
f0f1baa
Merge pull request #701 from fabro-sh/fix/quota-error-classification
brynary Aug 1, 2026
8db771b
Simplify parallel duration and event failure logging
Aug 1, 2026
42dcb41
Remove obsolete manifest Docker image argument
swerner Aug 1, 2026
e4541f8
Regenerate TypeScript API client
swerner Aug 1, 2026
0e0dfe4
refactor: simplify structured output error rendering
brynary Aug 1, 2026
dc46d18
fix(llm): classify provider error codes through one shared table
brynary Aug 1, 2026
daaca3f
refactor: simplify artifact ZIP download
brynary Aug 1, 2026
14cf4f3
Simplify MCP executable monitoring
brynary Aug 1, 2026
b834e0b
perf: batch archive writes and tolerate a vanished artifact
brynary Aug 1, 2026
c738130
fix: sort unexpected properties before comparing repair attempts
brynary Aug 1, 2026
2adb447
Address Copilot review comments
brynary Aug 1, 2026
baca460
Merge pull request #711 from fabro-sh/remove-dead-docker-image-arg
brynary Aug 1, 2026
8b767c6
fix: make the artifact tie-break match the artifacts page
brynary Aug 1, 2026
1d1894c
Merge pull request #700 from fabro-sh/fix/canceled-parallel-duration-…
brynary Aug 1, 2026
1884a4b
Reduce large stage event payloads
brynary Jul 31, 2026
bcf9b26
Remove prompt offloading from stage payload fix
brynary Jul 31, 2026
f97156d
Merge pull request #709 from fabro-sh/fix/actionable-structured-outpu…
brynary Aug 1, 2026
641b450
Merge pull request #698 from fabro-sh/fix/daytona-permission-compat
brynary Aug 1, 2026
4cb983c
Guard steering bar click target
Aug 1, 2026
a78750f
Update attach snapshot and soften context_values wording
brynary Aug 1, 2026
24cd22d
Merge pull request #703 from fabro-sh/fix/mcp-restart-after-upgrade-697
brynary Aug 1, 2026
97aeb56
refactor(llm): tighten provider error classification
brynary Aug 1, 2026
20d3aa5
Merge pull request #705 from fabro-sh/feat/download-all-artifacts
brynary Aug 1, 2026
61780d5
Merge pull request #699 from fabro-sh/steer-bar-default-closed
brynary Aug 1, 2026
0de3817
Merge branch 'main' into fix/human-input-timeout-accounting
brynary Aug 1, 2026
a4fbf3e
Merge pull request #710 from fabro-sh/fix/unify-provider-error-code-c…
brynary Aug 1, 2026
cc590f6
Merge remote-tracking branch 'origin/main' into fix/modal-provider-ca…
brynary Aug 1, 2026
82ae10d
Merge remote-tracking branch 'origin/main' into fix/modal-reasoning-t…
brynary Aug 1, 2026
75a912f
Merge pull request #702 from fabro-sh/fix/large-stage-event-payloads
brynary Aug 1, 2026
33e5dc8
Merge pull request #695 from fabro-sh/fix/modal-provider-catalog
brynary Aug 1, 2026
f4cd7c5
refactor: make the output contract a method on OutputSchemaKind
brynary Aug 1, 2026
641539d
refactor(llm): tighten Modal reasoning token tests
brynary Aug 1, 2026
66b282d
Merge pull request #691 from fabro-sh/fix/modal-reasoning-token-usage
brynary Aug 1, 2026
3fa48c3
refactor(workflow): simplify interview block state and stall watchdog
Aug 1, 2026
c59b4e9
Merge origin/main into fix/expose-agent-output-schema
brynary Aug 1, 2026
ee8f220
Merge remote-tracking branch 'origin/main' into fix/expose-agent-outp…
brynary Aug 1, 2026
69976fc
refactor(client): dedupe auth store lock acquisition
brynary Aug 1, 2026
58c8df5
fix(client): only adopt a peer-rotated token while it is usable
brynary Aug 1, 2026
fae39d9
refactor(workflow): tidy stall watchdog wiring and interview naming
Aug 1, 2026
1bb70ad
refactor: simplify subagent session reuse
brynary Aug 1, 2026
ef9606e
Reuse PermissionLevel and fix stale run spec snapshots
brynary Aug 1, 2026
143e660
Merge pull request #696 from fabro-sh/fix/expose-agent-output-schema
brynary Aug 1, 2026
8c19b1e
fix: keep forwarding a reused child's events after a broadcast lag
brynary Aug 1, 2026
41cd1aa
Merge pull request #693 from fabro-sh/fix/human-input-timeout-accounting
brynary Aug 1, 2026
5f72bfe
fix(client): name the refresh lock in its wait error
brynary Aug 1, 2026
a617eaa
docs: record why a resumed turn's send cannot hang an agent
brynary Aug 1, 2026
4b73228
Merge pull request #676 from fabro-sh/remove-run-agent-permissions
brynary Aug 1, 2026
8e4129d
Merge pull request #675 from fabro-sh/fix/cross-process-refresh-lock
brynary Aug 1, 2026
f212594
Merge pull request #694 from fabro-sh/feat/reusable-subagent-sessions
brynary Aug 1, 2026
d16cd75
Bump version to 0.312.0-nightly.1
fabro-releases[bot] Aug 1, 2026
885bc92
Fail runs that bypass goal gates
brynary Aug 1, 2026
a966de2
Potential fix for pull request finding
brynary Aug 1, 2026
116970c
Merge pull request #713 from fabro-sh/fix/require-unvisited-goal-gates
brynary Aug 1, 2026
77e7704
Bump version to 0.313.0-nightly.0
fabro-releases[bot] Aug 2, 2026
fdeaf63
merge: sync upstream main while preserving fork divergence
Aug 3, 2026
75955d1
fix(llm): restore ReasoningDetails import in openai_compatible stream…
Aug 3, 2026
3692da1
fix(sync): three auto-merge import drops repaired (ReasoningDetails x…
Aug 3, 2026
e4018e1
chore(sync): regenerate Cargo.lock after upstream merge
Aug 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
144 changes: 144 additions & 0 deletions .chisel/calibration/calibration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
# Chisel Quality Calibration

Calibration v1 · cartography v1 · revision `6bb6b5efcc0e36b52e3c097f532d9f2c00914c6c` · 2026-07-27T15:55:07Z
Sample: `fabro-workflow`, `fabro-http`, `fabro-web-app`, `repository-ci` · Control: `fabro-checkpoint` at `6bb6b5efcc0e36b52e3c097f532d9f2c00914c6c`
Evaluators: GPT-5 (Codex primary and independent reviewers)

## How to Use This Calibration

Judge each mapped component against its purpose and direct repository evidence.
Do not grade on a curve. Apply one score per lens, and count a finding under
only its primary lens.

**Isolated** means contained at an edge; normal callers and routine changes do
not encounter it. **Central** means part of a mapped entry point, common path,
or recurring change. A **routine change** is an ordinary extension or
maintenance task implied by the component's mapped purpose.

Infer routine work from the mapped purpose and traced common paths; a public
method alone does not establish frequency. A directly evidenced central concern
caps the component's lens score rather than being averaged against healthier
sub-responsibilities. Necessary delegation inside a clear owner is not pressure,
and size or internal busyness alone does not lower ownership.

Use **N/E** when evidence is insufficient. Never convert missing evidence into
a numeric score, and do not penalize a missing lifecycle path without evidence
that the mapped purpose requires it. Score 4 requires a positive production
mechanism and no material friction; tests may corroborate that mechanism but
cannot create it or become a second authority merely by asserting its contract.

## Lenses

### `ownership-boundaries` — Ownership and boundaries

**Does each responsibility and lifecycle have a clear home, with dependencies
pointing in the intended direction?** Includes responsibility, state, resource,
dependency, and lifecycle placement; excludes local control flow, naming,
types, API meaning, and repeated policy alone.

### `simplicity` — Simplicity

**Is the implementation no more complex, indirect, or general than necessary?**
Includes common-path traceability, control flow, indirection, abstraction, and
configuration burden; excludes placement, domain meaning, and independently
repeated knowledge.

### `domain-model` — Domain model

**Does each domain concept have one clear meaning and valid shape?** Includes
types, terminology, legal states, conversions, validation, and API semantics;
excludes module placement, lifecycle ownership, and repetition preserving one
meaning.

### `duplication-knowledge` — Duplication of knowledge

**Are policies, invariants, decisions, and transformations authoritative rather
than repeated?** Includes semantic repetition and manual synchronization;
excludes harmless syntax, coincidental similarity, and unification that would
create a parameterized mega-abstraction.

## Observable Anchors

| Score | Ownership and boundaries | Simplicity | Domain model | Duplication of knowledge |
|---:|---|---|---|---|
| 4 | One owner contains the mapped responsibility's state and complete lifecycle. | A production mechanism makes the necessary common path directly traceable. | Canonical types reject invalid states before every common-path interpretation. | One authoritative mechanism enforces each recurring policy, invariant, or transformation. |
| 3 | Ownership friction is isolated outside routine changes. | Unnecessary indirection is isolated outside routine changes. | Meaning or validation friction is isolated outside routine changes. | Repeated knowledge is isolated outside routine changes. |
| 2 | Routine changes coordinate competing owners or reverse the mapped dependency direction. | Routine changes repeatedly navigate competing paths, avoidable layers, or configuration machinery. | Routine changes reconcile recurring meanings, conversions, or invalid intermediate states. | Routine changes manually synchronize the same policy, invariant, or transformation across recurring locations. |
| 1 | No stable owner or dependency direction can be identified for the responsibility. | No stable common path can be traced through the implementation. | No stable meaning or legal shape can be identified for a core concept. | No stable authority can be identified for recurring domain knowledge. |

## Decision Rules

1. A directly evidenced central concern caps the component's lens score; do not average it against healthier sub-responsibilities.
2. Judge ownership against the map, not type names; when routine callers reconstruct a mapped lifecycle from low-level primitives, ownership fits 2.
3. A check owns trigger coverage for every path it scans; non-triggering routine targets are ownership pressure, while nonexistent selector values are domain-model pressure.
4. An unused production dependency or parallel entry layer is isolated simplicity friction, capping 4 at 3 when the common path remains direct.
5. Caller validation or a typed destination does not isolate an invalid-capable mapped entry; routine common-path use of that shape fits 2.
6. Concrete second semantic representations cap 4 at 3; score 2 only when an ordinary mapped change must synchronize them, not merely because call sites repeat.

## Confidence

Confidence describes evidence quality, not severity. **High** requires direct
evidence across relevant common and boundary paths; final High also requires
independent readings to converge. **Medium** has a material ambiguity or
coverage gap. **Low** is partial or substantially inferential.

## Classifying a Finding

- Where should this responsibility or lifecycle live? → `ownership-boundaries`
- Why is this much machinery necessary? → `simplicity`
- What does this name, type, state, or API value mean? → `domain-model`
- Why is this knowledge authoritative in several places? → `duplication-knowledge`

Tags are diagnostic metadata, not additional scores:

```text
abstraction-burden boundary-leakage configuration-sprawl
control-flow conversion-sprawl dependency-direction
generality indirection invalid-states
lifecycle misplaced-responsibility
ownership repeated-invariant repeated-policy
repeated-test-knowledge repeated-transformation
state-coupling type-sprawl vocabulary-drift
```

## Repository Examples

### `ownership-boundaries`

- `lib/components/fabro-workflow/src/lifecycle/mod.rs:WorkflowLifecycle` shows a central orchestrator can own callback order through focused delegates; reviewers must still inspect terminal paths before calling lifecycle ownership contained.
- `apps/fabro-web/app/lib/api-client.ts:apiData` and `apps/fabro-web/app/lib/queries.ts:useRun` keep shared transport and read lifecycles out of route composition; a busy route alone is not boundary leakage.

### `simplicity`

- `lib/foundation/fabro-http/src/lib.rs:define_builder!` makes async and blocking construction traceable through one necessary mechanism; local macro indirection can reinforce simplicity.
- `lib/components/fabro-workflow/src/operations/start.rs:RunSession::run` exposes a linear phase sequence, while service reshaping across phase inputs shows that a stable path can still carry recurring machinery.

### `domain-model`

- `lib/components/fabro-workflow/src/event/events.rs:Event::StageCompleted` uses string status before `lib/components/fabro-workflow/src/event/convert.rs:stage_status_from_string` reparses it; a typed durable result does not isolate this common-path intermediate.
- `lib/foundation/fabro-http/src/lib.rs:ProxyPolicy` and `ProxyPolicy::resolve_with_env_value` demonstrate a closed policy vocabulary whose invalid boundary values are rejected.

### `duplication-knowledge`

- `lib/components/fabro-workflow/src/event/names.rs:event_name` and `lib/components/fabro-workflow/src/event/convert.rs:event_body_from_event` show manual mappings that a routine event extension must synchronize, even when exhaustive matches detect omissions.
- `.github/workflows/rust.yml:on.push.paths` and `.github/workflows/rust.yml:on.pull_request.paths` demonstrate duplicated trigger knowledge: one source-area change requires two manual policy edits.

## Control Baseline

`fabro-checkpoint` at `6bb6b5efcc0e36b52e3c097f532d9f2c00914c6c`:

| Lens | Score | Confidence |
|---|---:|---|
| Ownership and boundaries | 2 | High |
| Simplicity | 3 | High |
| Domain model | 2 | Medium |
| Duplication of knowledge | 3 | Medium |

## Recalibration Triggers

Recalibrate only for a rubric change, a material cartography change, a model
change with demonstrated drift, or inconsistent scores on the control sample.

## Open Questions

None.
Loading