Releases
v2.11.0
Compare
Sorry, something went wrong.
No results found
[2.11.0] - 2026-09-08
Added
tools: answer the corpus pin from the tree, not the shared submodule checkout
ms-buckets: let a workflow ask for the prepared company, so the comparison can be measured
test-data: opt-in company normalization, blanking the restored Additional Reporting Currency
installed-apps: seed NAV App Installed App from the loaded-app closure
ci: run the whole Microsoft surface (40,530 tests) from one manual dispatch
corpus: measure how far the pin can advance, on a schedule, and report it
expectations: report an expectations entry that matched no test instead of ignoring it
preflight: check that the code-navigation tools answer, not that they exist
testpage: perform an action's RunObject instead of refusing it as out-of-scope
permissions: transcribe permission masks so BC can compose real permission sets
tools: pr-body.py, a guarded PR-body editor
tools: preflight.py — the autonomous-cycle preflight as an executable check with a real exit code
artifacts: relocate the BC artifacts root with AL_RUNNER_ARTIFACTS_ROOT
agents: an autonomous-cycle skill for running AL Runner development unattended
cli: a hung codeunit no longer takes the whole run down
cli: --jobs N runs bundles across worker processes
server: iterationTracking on execute pairs loop iterations with values, messages and lines
report: resolve request-page controls against the report globals they bind to
report: run the request page from Report.Run and write the dataset it asks for
record: implement the Date system virtual table (2000000007)
record: serve the Metadata Permission Set virtual table (2000000250)
all-profile: populate the All Profile system virtual table (2000000178)
Fixed
release: tag the tested commit first, so a branch that moved cannot discard a green release
date-vt: refuse a half-open Period Start range whose closed end is outside the window, per range
tests: cap the suite's heaviest collection at its modal timeout, and stop the message lying about it
emit-exclusion: decide per dropped object whether the module can still run
testpage: render a Decimal control with its own format, not a hardcoded two decimals
integer-vt: decide the half-open refusal per range, so a multi-range filter cannot drop a range silently
transactions: end the write transaction at the test-method boundary BC ends it at
integer-virtual-table: materialise rows per request so an ordinary row outside the window is readable
commit: refuse an explicit Commit() inside an AutoRollback test, the way BC does
permissions: answer the effective-permission question instead of dereferencing a null cache
testpage: do not write a row whose values did not move
testpage: ask the page for its rows when it declares OnFindRecord/OnNextRecord
testpage: name a fault in BC's value evaluator instead of reporting BC's date refusal
testpage: name a RunObject target in its own object kind's id space, not the page's
recursion: enforce BC's own MaxStackDepth instead of a hardcoded 500
testpage: render a blank Date, Time or DateTime control as '', the way BC does
testpage: classify the refused-close refusal as the gap it is, so a TryFunction cannot swallow it
ms-surface: coerce the per-test timeout, so GitHub will create the run at all
commit: honor the CommitBehavior attribute instead of always committing
page-events: register page trigger-event subscribers where BC looks for them
ms-buckets: give the Microsoft bucket workflows a per-test timeout above the hosted runner's speed
testpage: evaluate a Date, DateTime or Time control write instead of validating it as text
prepass: keep the provisioning-gap report when a source pre-pass wraps the failure
integer-virtual-table: implement the window guard the file promised, on all four request paths
testpage: realise CurrPage.Update's refresh, so the host's OnAfterGetCurrRecord runs
diagnostics: report paired counters from one snapshot, not two loads
agents: give each agent a private scratchpad path, and refuse a shared one
recordlink: back the AL link surface with the Record Link table instead of a second store
permissions: serve the Permission Set system table from permission-set metadata
tests: fence NclShadowPublishDiagnosisTests in the console-serial collection
rad: stop the incremental fast path shipping a caller bound to a moved object id
testpage: announce the navigation-mock demotion where the run log will show it
cli: create an output path's parent before the run, and never lose a run to a failed write
junit: mark a collateral failure and name a lost suite in the XML report
provisioning: stop an unanswered CDN probe from demoting a provisioning tier
shadow: name the rename's real failure, and refuse to hand back a directory that cannot be exec'd
report-metadata: carry a precompiled dependency dataitem's MaxIteration
tools: refuse when nothing vouches for the running copy, and make --timeout 0 a real single pass
tablerelation: refuse an unrepresentable relation shape instead of dropping it silently
record: report AreFieldsLoaded from the load set BC keeps, not the always-full buffer
shadow: retry the shadow-dir publish when the source is locked, instead of crashing
testfilter: apply the key and the direction TestFilter is given, and name the key's fields
preflight: verify the corpus baseline against its own numbers, not the exit code
permissions: store the effective-permission set instead of NREing on a null permission cache
pbt: stop refusing a page background task worker's write to a temporary record
encryption: give the tenant encryption key a real ledger, so CREATEKEY/DELETEKEY/EXPORTKEY/IMPORTKEY stop raising a bare ArgumentException
testpage: refuse a part BC does not render, and an id outside GetField's id space
testpart: resolve a part's page id from its client, and resume a control-field search from the cursor
cecil: give the zero-parameter no-op its own shim, and refuse an arity mismatch
tablerelation: refuse a relation the runner could not resolve, instead of dropping it
tools: count a corpus run's per-leg passes correctly, and write down the five false zeros
calcformula: resolve SystemRowVersion, which BC puts at field id 0
testpage: give the PAGE its own validation-error ledger, so AL stops reading a hardcoded 0
testpage: land Last() on the new-row line when it finds nothing, as First() does
testpage: match a service tier on the dialog page types' built-in OK/Cancel and on the unattended close
published-app: answer NAV App Extra, so the other two FlowFields stop reading false
ci-wait: fall through to the API when a failing-log fetch comes back empty
calcformula: resolve a tableextension or system field in every CalcFormula and TableRelation lookup, and refuse instead of dropping an arm
page-metadata: answer the nine SourceObject columns from BC's own parsed metadata
install: let install triggers run to completion — observe their ValueTask, and remove the three gaps that hid behind it
jmphook: apply the disabled and Cecil-owned guards to InstallIndirect
permissions: back the session user's SUPER status with a real Access Control row, and bump the corpus pin
ci-wait: reach a verdict on a concluded run, refuse when freshness is unknown
symbols: read TableRelation for a field a precompiled tableextension contributes
pages: show an error from OnQueryClosePage the way BC's client does
ci: read the collection-weight gate against the leg's own clock, and fail only above 2.5x
record: the legacy Object (2000000001) registry holds no rows, because a real tier holds none
session: give the Session virtual table (2000000009) the reading session's row
user-table: run BC's SystemTableTriggers arms for the User system table
record: merge a tableextension's declared keys into the extended table's key list
testpage: open a RunObject action's target unattended when no handler is bound
reload: clear the query-symbol source list, and keep a bundle's own registration alive across the RAD fast path
symbolcache: strip AL directives from a SourceTableView's sorting() clause too
testpage: make TestPage.View() and TestPage.Edit() open the CardPageId card
symbolcache: count a RunPageLink's entries with the splitter that parses them, and carry what it could not read
execute: pick the OnRun codeunit by object id, and make the #2801 ordering rule provable without the AL compiler
cache: refuse an AL-output cache identity when the key's inputs are unknown
bc-shape: name the member at 73 BC-internals lookups guarded only by !
symbols: refuse when a dependency .app's symbols cannot be read, instead of reporting that it declares nothing
pagemeta: pass the unreadable-entry out parameter at the RunObject call site
flowfield: keep a FlowField's CalcFormula through a tableextension symbol and a late .app registration
pagemeta: refuse a page whose SourceTableView or SubPageLink could not be read, and read the ones AL directives guard
preflight: retry a dropped packet, refuse a stale copy, and report what the token can merge
testpage: apply a RunObject action's RunPageLink instead of refusing it
ci-wait: complete the built-in required-context fallback, and stop the test fixtures freezing the ruleset size
metadata: answer Page Metadata's PageType from BC's own runtime enum, and CodeUnit Metadata's SubType from the compiler's
record: refuse Object Metadata's nine payload columns by name instead of reading blank
testpage: resolve a control whose binding the AL compiler registered under another control
dotnet-interop: name the surface when a .NET type refuses this OS, and stop the page-open path swallowing refusals
reload: clear four built-metadata caches that outlived the bundle they were built from
tests: skip a subdirectory deleted while the project walk runs
test-exec: order a codeunit's test methods by a key that does not depend on reflection order
metadata: clear the object-reference const memo on a bundle reload, and cover the resolver's bare-name and call-site halves
seeding: refuse a system-table column the seeder cannot find, instead of skipping it
testpage: name the AL error "The TestPage is not open." was reported in place of
testpage: a plain Cancel needs dialog chrome, and bump the corpus pin to 6e198a97
metadata: resolve a Database::/Report:: const in a where() clause to the object id
expectations: audit the run, not the final attempt's own discovery set
tools: refuse a verdict from a copy of the tool that origin/main has moved on
bundle: collect a multi-app bundle's manifests from the suites, at any depth
page-metadata: revalidate EnsureRealPageMetadata's negative answers when the .app set grows
permissions: answer IsPermissionSetAssigned from Access Control instead of NREing on a null permission cache
test-data: take the --test-data summary as one snapshot
reflection: resolve eleven BC method lookups by enumeration, and ratchet the rest
pkgdedup: apply the stage-name rule to claim files, floor the age threshold, and bound the rollout window with a measurement
agents: derive an agent's worktree path from identity AND issue, so two loops on one slot cannot share a checkout
ci-wait: never print a genuine failure under "Superseded ... Harmless"
allobj: refuse loudly when the owner index cannot read an assembly, instead of silently unowning every object it declares
log: stop the [Component] filter eating every "Loud, never silent" diagnosis
permissions: refuse an unreadable permission-set symbol read instead of answering blank
cache: one error contract for every startup cache-root writer, and a guard for the al-out root
tests: make a bc-engine-serial skip say which collection, why, and what would fix it
guards: decide the Base App floor from the manifest, not from prose that quotes it
pages: carry the five SourceObject properties a dependency page's symbol file states
test-exec: run test codeunits in ascending object ID instead of Assembly.GetTypes() order
permissions: delete two dead permission-metadata helpers and guard the shape that hid them
ci: see a colon between a closing keyword and its issue reference
allobj: an app owns the objects its assembly declares, even when its bundle-root .app is stale
testpage: close a self-closing page once, not once per closing mechanism
cache: root a relative --cache once, and refuse an unrooted cache root loudly
events: observe a precompiled table-event subscriber's ValueTask so its error reaches AL
record: refuse a CalcFields field that is not a FlowField or a BLOB, the way BC does
published-app: match BC's package ids and Installed, and drop the two known-gaps for it
deps: give every R2R chunk of an app its module identity, not just the first
table-metadata: resolve an undeclared option column's default by name, not ordinal 0
permission-metadata: name the BC-layout change instead of throwing a type asserterror swallows
record: decide Object's --test-data precedence from what the backup loaded, not from what the store holds
testpage: discard a New() row that nothing wrote to when the page closes
testpage: raise OnQueryClosePage on a page the platform closes for a handler
deps: ask same-SourcePath before identity, so a version bump is not a self-collision
field-triggers: refuse the two silent skips left on the install path
testpage: start the row before validating a write to a part's draft line
cache: key the content-hash memo on the file, not the path, so hard-linked packages are read once
permission-metadata: refuse loudly when a BC member behind a null-forgiving read has moved
bcapp: key .app-derived caches on a registration epoch, and drop the negative table cache with them
field-triggers: refuse loudly when BC's handler backing field cannot be read
cache: identify the layered workspace dir and the table-extension cache by content
permissions: say a BC-internals read that failed is a shape gap, not an out-of-scope refusal
cache: identify the persisted app-manifests index by package content, not a stat
testpage: use the tier's measured refusal text and out-of-range behavior
published-application: list the loaded apps, so System App ownership checks stop declining
pkgdedup: bound the shared al-runner-pkgdedup staging root
date: answer Record Date.IsEmpty() over the widened window, and stop its nine refusals claiming permanent scope
refusals: say sixteen TestPage refusals are gaps, not scope boundaries
record: answer the Field virtual table on Count, IsEmpty and keyed Get, not only on find
test-data: make TestDataProvisioner's --test-data tallies Interlocked
tests: guards that scan nothing now fail, and none of them exempts by bare file name
compile,patches: name the malformed AL, and stop erasing the frames that say where a failure came from
cache: identify the persisted r2r-chunks cache by package content, not a stat
temp,output: validate a shared pkgdedup stage before reuse, and stop printing a locale-dependent elapsed time
testpage: record a refused control write so ValidationErrorCount can read it
refusals: say twenty-seven scope.md citations outside the virtual tables are gaps
ci-wait: refuse a verdict resolved from a run that is not the head's live run
table-metadata: read TableType, DataClassification and ExternalName off the table declaration
install-baseline: serialise baseline appends and the walks that race them
flowfields: run BC's own CheckFlowFieldProperties before aggregating
phaselog: read VmHWM and VmRSS from one /proc/self/status sample so the peak-RSS invariant cannot race
skeleton: put the runner's session user in the User table, so a relation to it resolves
flowfields: aggregate Min/Max in CalcNumeric instead of answering a never-written sum accumulator
server: drop the dependency page/report metadata memos when the registered .app set changes
refusals: say when the runner could not read BC's internals
record: fill the Object (2000000001) system table, and make its four OemText columns readable
pages: apply a page's SourceTableView on open, precompiled pages included
provisioning: report what the network actually did instead of blaming the CDN
table-relation: read a namespace-qualified target instead of refusing the relation
virtual-tables: say the 55 refusals are gaps, not scope boundaries
task-scheduler: refuse TaskExists/CancelTask by name instead of NRE-ing out of BC's scheduler data layer
object-metadata: say these twelve refusals are gaps, not scope boundaries
test-data: load a table first materialised inside another table's hydration
query: give a query FlowField column the query's own flow filters
watch,cli: one module per AL identity under --watch, and brace the TEST-TIMEOUT-ABORT guard
table-relation: carry a where(... = field(...)) link instead of dropping the whole relation
ci-wait: drive the verdict from the ruleset and the newest workflow run
server: clear the registered symbol .apps on bundle reload, not just their derived indexes
preflight: strip mise's stdout banner, which made a healthy box read as unable to push
reporter: tell a collateral failure from a real one when a bundle loses a suite
build: make the runner content hash a function of source, not of the build path
record: order the hand-out of a table's storage against its --test-data hydration
summary: name the bundles that built and then failed to run
test-data: hand only symbol-bearing packages to the backup reader
two failures that reported as clean results — a PARTIAL pe_signing scan, and a silent corrupt sidecar DLL
expectations: give the count baseline one line per app group
rad: stop the incremental fast path shipping a caller bound to a moved ordinal or field id
date: widen the Date window for a keyed Get, not only for a find
cache: identify AL-output cache dependencies by content hash, not mtime+size
object-metadata: refuse a moved primaryTree layout instead of reading it as "no rows"
permissions: fall back to the Role ID, not the object name, for a Caption-less Name
testpage: opening a TestPage is not a commit point
report: refuse a request page's rendered-output request instead of writing a dataset
cache: key the install-baseline on what was PARSED, not just the .app bytes
compile: sort AL source discovery, so test execution order stops depending on readdir
resume: hand the carry directory to the child, so a killed parent stops costing the run
testpage: load-trigger a handler page opened on a caller-positioned row
testpage: run OnValidate on the fields New() stamps from a SubPageLink
bc-symbols: key the cache on the payload's SHAPE, not just a number someone has to remember
skeleton: seed the tenant's profile page-metadata cache BC reads for control captions
expectations: drop the Boolean-spelling known-gap entry #2809 made stale
expectations: drop the StartSession known-gap entry that #2825 had already fixed
testpage: render a Boolean control as Yes/No, the way real BC does
summary: name the bundles that did not compile, in the block that gets read
session: refuse StartSession inside a test codeunit, as BC does
http: let AL's HttpClient mocking run, and refuse real egress at the egress boundary
resume: refuse to report a run whose carried attempt files went missing
watch: execute bundles in dependency order, the defect #2614 fixed for --server
recordref: scope-check RecordRef.Open against the app's compilation target at runtime
reports: run BC's whole pre-report step, not just the OnPreReport trigger
resume: carry full results so --output-json, --out and --count-baseline describe the run
virtual-tables: stop the find-time populates writing into a temporary record's store
server: run a request's bundles in dependency order, not sourcePaths order
jobs: scale the per-test watchdog by shard count, after measuring whether it needed it
ci: scan commit messages, not just the PR body, for closing and skip directives
record: answer the Object Metadata (2000000071) application-database system table
reporter: name the suites a bundle lost instead of printing a clean summary
session: run a precompiled worker's OnRun body under StartSession
dep-metadata: read a precompiled table's TableRelation from SymbolReference.json
ci: stop a same-commit cancellation blocking the merge with everything green
report: an execution failure must not be reported as a compile failure
test-boundary: roll back a failed test's uncommitted writes, as BC's own catch does
testpage: fall back to the source table field's OnLookup trigger
capture-values: unwrap ByRef so a var parameter renders its value
watch: stop serving a dependent bundle the previous compile of its dependency
ci: pe_signing verify must fail on a scan that classified no PE files
shutdown: make BC's ExecutionScheduler thread background so a one-shot run exits; bound --jobs worker wait
testpage: run precompiled pages' lifecycle triggers in the flavour BC emitted them in
cache: key the install-baseline on the BC symbol state it was derived from
deps: count the Tier-1 sidecar DLL as an implementation, so the provisioning-gap notice stops firing on healthy runs
table-connections: run BC's own TableConnectionManager and CRM '@@test @@' test connection on the skeleton session
temp: give every runner-written scratch dir an owner, and sweep dead owners' leftovers at startup
testpage: apply const()/filter() SubPageLinks on subpage parts instead of refusing them
testpage: resolve mangled member names on precompiled pages from SymbolReference.json
report: run precompiled reports' OnPre/OnPostReport in the flavour BC emitted them in
jobs: write a resumed run's carried cases into its JUnit so the --jobs aggregate is the whole run
jobs: scale the AL emit timeout by worker count so --jobs stops losing bundles
symbols: a table-extension parse that fails part-way is fatal, never a cached partial
enum: keep compiled-deps enum sidecar base/extension entries separate
testpage: stamp CurrFieldNo for a TestPage SetValue's validate
testpage: fire an eagerly-adopted subpage part's OnOpenPage on first reification
events: purge injected-subscriber guard on tableextension eviction
resume: continue where the run stopped instead of re-running it from the start
record: raise BC's read-only-field error on Feature Key Modify
record: a snapshot replay is not an AL Insert — don't refuse its SystemIds
deps: extract a dependency's AL source per process, not into a shared dir
diagnostics: unwrap TargetInvocationException so EXEC-FAIL names the real cause
deps: let a source-built package supersede a packaged copy of the same app
testpage: format Decimal-typed TestPage controls with decimal places
testpage: tear a TestPage down after an unhandled record-positioning trigger error
testpage: reset a page's own globals when a TestPage is reopened
testpage: a subpage part linked via SubPageLink never fired OnAfterGetRecord
cli: report 0.0.0-main from a source build instead of a stale 2.0.0-preview.1
patches: stop a passing run dumping 618 bare stack-frame lines on stderr
record: refuse a duplicate SystemId on Insert, preserve it across Modify
cache: --no-cache now disables every on-disk cache, not just al-out
provision: verify the test toolkit really landed instead of trusting a glob or an exit code
provision: remove empty // dirs left by failed AutoProvision
watch: clear page/xmlport metadata registries on reload without regressing #1957
media: let a structurally valid PNG import into a Media field
provision: stop --force/--resolve-version from silently doing less than they say
tests: stop bounding the FULL REBUILD search at the cycle-2 marker
testpage: run page background tasks inline instead of refusing loudly
install: arm event-subscriber injection before the first Install trigger
server: select at PROCEDURE granularity for affectedOnly, not whole-object
expectations: drop two Feature Key known-gap entries that main already passes
streams: implement ALCompiler.DotNetToNavInStream (.NET Stream -> AL InStream)
query: apply the ReverseSign column property instead of ignoring it
scripts: parse VSTest timestamps on Python 3.9, hold the FIFO portably, and run the script tests
testpage: TestPage. adopts the host's own subpage instance
diagnostics: name the app group in an EXEC-FAIL, not the bundle marker
server: stop a consuming bundle replaying stale C# after a sibling re-emits
layered: decide prebuilt-shadow staleness on content, not mtime
option: strip AL identifier quoting from Option field member names
dep-metadata: carry the SourceObject flags the symbol file states
cli: print the build's own version, and stop overselling --print-cache-key
phaselog: report a real peak RSS on macOS instead of a silent zero
rad: make a namespace clone field-complete instead of naming three properties
virtual-tables: stop the first virtual table to populate from latching the other two
testpage: page background tasks refuse loudly instead of crashing (partial progress on #2514 )
rad: stop the incremental fast path shipping a caller bound to the old overload
server: make affectedOnly coverage attribution request-wide, not per-module
metadata: carry a table's declared Caption onto its NCLMetaTable
deps: read a sibling app's manifest from its app root, not just its source folders
testpage: GoToRecord not-found restore refreshes non-key fields
testpage: GoToRecord no longer resolves position by field caption
testpage: TestPage over a temporary SourceTable = Integer opens empty, not the virtual table
rad: stop losing a namespace-nested sibling's array on a RAD self-loader clone
startup: make ncl-shadow publish/prune safe under concurrent al-runner startups
codeunit: trap and roll back a failed guarded Codeunit.Run for both call spellings
rad: make the RAD baseline namespace-aware, fixing the empty ModuleDefinition
Aggregate Permission Set redrives its union on every Get()/Find() request
testpage: enforce field MinValue/MaxValue on TestPage SetValue
server: stop affectedOnly from silently narrowing a sibling bundle when a dependency's incremental cycle can't be attributed
record: keep field-trigger wiring alive across a tableextension-forced NCLMetaTable rebuild
Aggregate Permission Set redrives its union on every touch
testpage: resolve TestPage controls bound to tableextension fields
runtime: seed NavSession.DocumentStorageService so it never NREs
local Codeunit-var manual bindings and TransactionModel::AutoRollback
page-metadata: resolve a bundle page's SourceTable against a dependency's precompiled table
server: warm-server-reload cluster — precompiled tableextensions, install-baseline restore, affectedOnly env key
query: apply static ColumnFilter and FlowField+Sum group-by on the JOIN path
record: populate the Aggregate Permission Set virtual table
events: clear manually-bound event subscriptions at the codeunit/test boundary
page-metadata: reconstruct subpage parts for a precompiled dependency page
page-metadata: emit SourceObject and Expressions for a dependency page with no source table
testpage: inject lazy trigger/validate subscribers at TestPageFactory's record construction site
testpage: render an Option/Enum ordinal as the control's text in ValueToString
test-exec: make an unreachable null-instance branch throw, not break
report: read ProcessingOnly from dependency symbols, not only parsed AL source
query: apply a query column's static ColumnFilter property
query: compute a JOIN's FlowField column instead of throwing OOS
rollback: a plain nested BC transaction is not a commit point
record: asserterror rollback no longer materializes a phantom failed-Insert row or discards an earlier landed write on the same table
permissions: a Caption-less permission set's Name falls back to its Role ID
hooks: nudge on shell READS of C# too, not just searches
query: normalize a module-qualified RelatedTable on Query dataitems
testpage: position a page on its first row (or new-row line) the moment it opens
rollback: scope asserterror rollback refresh to landed writes
query: compute single-dataitem FlowField query columns instead of NRE-ing or corrupting the value
test-exec: make a watchdog-timeout suite abort loud, not silent
query: retarget wildcard filters on query columns to the source field
events: bind IncludeSender to the sender parameter at any position
events: lazily inject table-trigger subscribers at metatable-build time
agents: allowlist the bc-decompiler MCP tools the agent definitions already document
testpage: await the AL page trigger's ValueTask so a control's OnValidate error is not silently discarded
page: dispatch non-modal Page.Run instead of NREing on a null ServiceConnection
session: give the skeleton NavDatabase a tenant so BC can answer the execution context
testpage: resolve a dependency-declared page's SourceTable in GetMetaTable
codeunit: a guarded Codeunit.Run must end its own transaction
record: create the User Property companion row BC's User insert trigger creates
flowfield: negate -exist(...) logically, not through NegateValue
company: put the runner's own company in the Company table
numbersequence: raise BC's trappable NavALException, not BCL exceptions
alsid: answer Sid(name) with BC's not-mapped empty string on a host with no Windows identity store
Documentation
skill: say what Microsoft's data recipe is, that it cannot be replicated, and how to capture a difference
limitations: audit every claim against a run, and correct sixteen stale ones
count-baseline: correct a history entry that recorded three false claims
testpage: drop a merge-order note whose two pull requests have both landed
countpair: the halves share one word, so a carry lands in Total rather than wrapping
scope: audit the §4 gap table row by row; drop seven rows the runner has since closed
prose: bound the audit justification's form, and pilot a comment reduction on three files
six documentation corrections, each verified against the thing it describes
rules: read a CI verdict, never block on one
count-baseline: correct two figures that went stale in the pin-catch-up entry
agents: ask where a comment's reader is, and stop reviews asking for more prose
impl-agent: stop gating comments the posting rule says are ungated
weights: correct why AlOutputCacheDoNotCacheTests is recorded at 64s
ci: state the BC matrix and required checks this repo actually has, and guard the numbers
corpus: record that the action-opens-a-page blind spot is closed, and what is left
rules: scan the open-issue queue and fold in siblings that land in the same file
ci: narrow the cancelled-run re-run exemption to commits with no failure log
skills: say that --auto merges a green PR instead of refusing to arm it
skills: size the reviewer pool from measured throughput, arm on approve, and make a conflicted PR visible
oos: stop claiming RunnerOutOfScopeException is untrappable from AL, and pin what it does
reviewer: post the review on the PR, and stop contradicting the posting rule
agents: a rule that an issue's open PRs, not its assignee, decide ownership
agents: the loop can measure its own budget, and the assignee is not the lock
agents: widen the corpus-test rule, and say the runner fix never waits on it
scope: document-service providers are out of scope, and guard the decision
pr: put the closing-reference escape hatch where the body is written
skill: record that --test-data gives a restored CRONUS, not a prepared one
limitations: correct the task-scheduler section — nothing runs, inline or otherwise
rules: resolve the never-rerun vs flake-evidence contradiction in ci-verdicts.md
rules: the corpus default branch is master, not main
patches: correct a transaction-snapshot comment that still says two fixed tests fail
agents: record the coordinator's standing authority and the traps found running one
agents: opening a corpus PR needs no approval
Changed
test-matrix: skip the BC matrix on a docs-only pull request, keep the required context reporting
docs: gate doc-pointer checks from tools/test_doc_pointers.py so docs-only PRs still run them
corpus: advance the pin to e6a0a0c, where the SingleInstance fixtures stop sharing
isolation: fence every console swapper, not just the Log.Install() ones
corpus: advance the pin to 9ee6bbc, where the count goes down by one
corpus: advance the pin to 0bbe376, the newest prefix that is green
corpus: advance the pin seven commits, as far as it goes green
runner-extras: pin the source-parsed reader for a tableextension's TableRelation
runner-extras: pin precompiled-dependency subscriber dispatch on the User system table
cache: drive the server-mode do-not-cache gate, which no arm entered
refuse a pull request that moves the corpus pin backward
expectations: flag a PR that closes a gap issue while its known-gap entry survives
fixtures: discharge the last three Base Application floor entries
enforce a corpus-linkage declaration, and reconcile the pin-bump rule with practice
run 3 BC legs on a pull request, and rename the required check to match
move the guards that must block into a workflow that can gate
guards: stop the _BCVersion drift gate walking into every agent's worktree
testpage: pin a refusal raised in a table subscriber below a page-global control write
main: put a floor under how long main can sit without a verdict
guard: fail when two runner-extras app groups claim overlapping idRanges
recordref: measure 2000000001's target gate directly, and retire the stale "no tier can see Object"
date: stop materialising the 86,885-row window behind a guard that already narrowed the request
events: cover the ValueTask reflection arm at both async-unwrap seams
preflight: build both halves of the stray-graph FAIL, and name a stray with no graphify
guards: scan the runtime shape-gap guards repo-wide, not over five hard-coded filenames
oos: stop a throw site from doubling the scope.md pointer, and read IL to do it
deps: fold the dependency cache key's package hash into the shared content-hash memo
field-triggers: pin all 17 install-path refusals, the proportionality claim and the bundle-load abort
provision: stop scanning patch directories whose packages a kept one already covers
date: materialise Date rows per request, not a whole window per record variable
corpus: enumerate the corpus's test apps instead of naming one path
record-patches: keep parsed AL trees across a warm reload, keyed on content
guards: scan AlRunner.Tests sources at any depth, not just the top level
own every scratch directory in AlRunner.Tests, and enforce it
compiler: stop a layered dependency republish re-warming the package reference loader
compile: pin the DotNet/compilation-target matrix end to end
a nightly Microsoft-bucket run on the newest BC, red for a named reason
watch: cover the app-with-table plus test-app arrangement, which had none
fixtures: add a way to build a REGISTRABLE .app in-process, and prove it registers
startsession: verify the isolation guard stays inert outside a [Test]
ms-bucket: move the reader pin to v0.1.2 and name the repository that exists
startsession: restore AL coverage of the dispatch path behind the isolation guard
suite-abort: make the watchdog flake say what happened instead of nothing
corpus: catch up the al-language pin to a307df8 and classify what newly fails
#2819 : capture a core dump when the runner is killed by a signal
cache-gate: stop resolving dep ids into a dead variable, and gate both whole-tree probes
systemid: index the duplicate-SystemId check instead of scanning every row
add a single-leg diagnostic re-run, so the flake-evidence recipe works in this repo too
manual-dispatch workflow to run one Microsoft BaseApp bucket with --test-data
jobs: tune each worker for footprint — half the peak memory for 6-7% wall
ci: run the C# unit suite on 2 BC legs instead of 8
compiler: route source-dependency symbol synthesis through the RAD incremental path
program: split static helper functions out of Program.cs
cecil: split NclCecilRewrite into partial files by area
Key the TestPage field cache by control id, not by table field number
perf: give ServerAffectedSelectionTests its measured weight
Populate the Windows Language (2000000045) virtual table
tests: drop the unused Base Application floor from the most-spawned test fixture
stop the changelog sync losing a race it cannot win
Route Feature Key (2000000211) to BC's own FeatureKeyDataProvider
reporter: pin ProvisionGapLog's discovery order, the one property #2597 left uncovered
stop superseded runs from holding job slots
compile: run CallSiteArgWrap only when the real emit needs it
guard: the silent-skip guard could not see the multi-line shape
Evaluate the TestPage control property expression instead of looking it up as a name
packages: answer both .app metadata questions from one read, and cache both
Populate the Time Zone (2000000164) virtual table from the host
Name this bundle's provisioning gaps again in the run summary
Give each runner process its own sibling-symbols directory
roslyn: parse in parallel and share metadata references across compiles
gc: run the runner under Server GC
Populate the CodeUnit Metadata (2000000137) virtual table
scheduling: record BcVersionDefaultDocumentationTests' measured weight
subprocess: drain the async output readers before reading captured stdout
perf: gate plain-run instrumentation cost on behaviour, not time
Fix page-variable TestPage option enumeration
Fix --server single-bundle dependency resolution parity for sibling source apps
Server mode: add affected-only runTests selection with conservative forced-full fallback
tests: stop loading the Base Application closure in fixtures that never read it
orchestrating-a-session: capture the coordinator contract so it stops being re-explained
agents: make code navigation the path agents are actually told about
tests: route the three worst spawn-heavy test classes through the warm --server fixture
corpus: bump the pin to the TestPage-over-a-platform-page suite
test-data: read backup tables over serve mode, and stop paying per-call costs on the hottest hooks
corpus: bump the pin to the four backfilled BC-behavior tests
normalise a Time field's InitValue to the format BC evaluates it with
capture DefaultImplementation and UnknownValueImplementation
match option text the way BC does, not ordinal-exact
drop an unmappable column, not the whole table
re-quote a filter() identifier for BC's filter grammar
You can’t perform that action at this time.