project/evidence/local-foundation.json
Rama main · réplica de lectura del repositorio original.
{"numTotalTestSuites":204,"numPassedTestSuites":204,"numFailedTestSuites":0,"numPendingTestSuites":0,"numTotalTests":312,"numPassedTests":312,"numFailedTests":0,"numPendingTests":0,"numTodoTests":0,"snapshot":{"added":0,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0,"didUpdate":false},"startTime":1788451686755,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":["authenticated CLI profiles and remote publication"],"fullName":"authenticated CLI profiles and remote publication CLI-003-B CLI-003-F: resumes a lost commit response across CLI process restarts","status":"passed","title":"CLI-003-B CLI-003-F: resumes a lost commit response across CLI process restarts","duration":4751.899541000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["authenticated CLI profiles and remote publication"],"fullName":"authenticated CLI profiles and remote publication CLI-002-B PUB-012-B: stores a verified profile outside the project and publishes through it after restart","status":"passed","title":"CLI-002-B PUB-012-B: stores a verified profile outside the project and publishes through it after restart","duration":12647.913417,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["authenticated CLI profiles and remote publication"],"fullName":"authenticated CLI profiles and remote publication CLI-002-F PUB-012-F: rejects an invalid credential without saving it and never sends one profile to another origin","status":"passed","title":"CLI-002-F PUB-012-F: rejects an invalid credential without saving it and never sends one profile to another origin","duration":4549.455624999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["authenticated CLI profiles and remote publication"],"fullName":"authenticated CLI profiles and remote publication completes browser PKCE, refresh, status, and revocation against real HTTP boundaries","status":"passed","title":"completes browser PKCE, refresh, status, and revocation against real HTTP boundaries","duration":3483.6122499999983,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451686977,"endTime":1788451712410.6123,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/cli/auth-profile-remote-publish.test.ts"},{"assertionResults":[{"ancestorTitles":["Artifact Server lifecycle CLI"],"fullName":"Artifact Server lifecycle CLI foundation: initialization, configuration, and support diagnostics are stable and secret-free","status":"passed","title":"foundation: initialization, configuration, and support diagnostics are stable and secret-free","duration":9228.416374999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["Artifact Server lifecycle CLI"],"fullName":"Artifact Server lifecycle CLI foundation: compact serving withdraws readiness and integrity scans real committed bytes","status":"passed","title":"foundation: compact serving withdraws readiness and integrity scans real committed bytes","duration":6722.495875000002,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451687440,"endTime":1788451703391.4958,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/cli/lifecycle-cli.test.ts"},{"assertionResults":[{"ancestorTitles":["artifactserver link"],"fullName":"artifactserver link links a file named by a relative path and prints the binding","status":"passed","title":"links a file named by a relative path and prints the binding","duration":1314.725875,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["artifactserver link"],"fullName":"artifactserver link explains the unavailable capability in one line and exits non-zero","status":"passed","title":"explains the unavailable capability in one line and exits non-zero","duration":1001.9761669999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["artifactserver link"],"fullName":"artifactserver link refuses a path outside the configured link roots","status":"passed","title":"refuses a path outside the configured link roots","duration":1100.5715000000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["artifactserver link"],"fullName":"artifactserver link CLI-SEC-001-F: never sends a local-owner token to an arbitrary explicit origin","status":"passed","title":"CLI-SEC-001-F: never sends a local-owner token to an arbitrary explicit origin","duration":1166.5481250000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["artifactserver link"],"fullName":"artifactserver link CLI-SEC-002-F: refuses authenticated redirects","status":"passed","title":"CLI-SEC-002-F: refuses authenticated redirects","duration":1300.8540409999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["artifactserver link"],"fullName":"artifactserver link foundation: missing local credentials name real recovery commands","status":"passed","title":"foundation: missing local credentials name real recovery commands","duration":1217.7540840000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451687660,"endTime":1788451694762.7542,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/cli/link-cli.test.ts"},{"assertionResults":[{"ancestorTitles":["local Artifact Server CLI"],"fullName":"local Artifact Server CLI opens the managed application at a credential-free URL","status":"passed","title":"opens the managed application at a credential-free URL","duration":3726.513875,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local Artifact Server CLI"],"fullName":"local Artifact Server CLI starts with private reusable credentials without printing them","status":"passed","title":"starts with private reusable credentials without printing them","duration":2522.6100420000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local Artifact Server CLI"],"fullName":"local Artifact Server CLI rejects an invalid port before creating persistent state","status":"passed","title":"rejects an invalid port before creating persistent state","duration":1201.6272920000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local Artifact Server CLI"],"fullName":"local Artifact Server CLI PUB-002-B SCP-007-B: publishes a file, a large finished directory, and a second immutable version through real processes","status":"passed","title":"PUB-002-B SCP-007-B: publishes a file, a large finished directory, and a second immutable version through real processes","duration":10638.387416000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451686975,"endTime":1788451705064.3875,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/cli/local-cli.test.ts"},{"assertionResults":[{"ancestorTitles":["local MCP onboarding"],"fullName":"local MCP onboarding stdio reuses one service and preserves modern discovery","status":"passed","title":"stdio reuses one service and preserves modern discovery","duration":8642.033667,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local MCP onboarding"],"fullName":"local MCP onboarding connect and disconnect preserve unrelated client configuration","status":"passed","title":"connect and disconnect preserve unrelated client configuration","duration":658.3738750000011,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local MCP onboarding"],"fullName":"local MCP onboarding foundation: native inspection failures stop before client mutation","status":"passed","title":"foundation: native inspection failures stop before client mutation","duration":154.5297499999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local MCP onboarding"],"fullName":"local MCP onboarding MCP-020-B: resumes a journaled native-client change after process interruption","status":"passed","title":"MCP-020-B: resumes a journaled native-client change after process interruption","duration":514.8645419999993,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local MCP onboarding"],"fullName":"local MCP onboarding MCP-020-F: rolls back failed mutation and preserves an independent interrupted change","status":"passed","title":"MCP-020-F: rolls back failed mutation and preserves an independent interrupted change","duration":585.0772500000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local MCP onboarding"],"fullName":"local MCP onboarding refuses foreign and malformed JSON client configuration","status":"passed","title":"refuses foreign and malformed JSON client configuration","duration":13.204625000000306,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local MCP onboarding"],"fullName":"local MCP onboarding ambiguous connect and doctor failures do not create or repair state","status":"passed","title":"ambiguous connect and doctor failures do not create or repair state","duration":5052.8505829999995,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451687162,"endTime":1788451702782.8506,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/cli/mcp-onboarding.test.ts"},{"assertionResults":[{"ancestorTitles":["artifactserver start with linked files enabled"],"fullName":"artifactserver start with linked files enabled the environment flags reach the direct-start server and linking works","status":"passed","title":"the environment flags reach the direct-start server and linking works","duration":1387.64525,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451687660,"endTime":1788451689047.6453,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/cli/start-linked-cli.test.ts"},{"assertionResults":[{"ancestorTitles":["bridge activity beacon"],"fullName":"bridge activity beacon beacons fire once each at bundle acceptance, first reply, and settled work","status":"passed","title":"beacons fire once each at bundle acceptance, first reply, and settled work","duration":4510.862166999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["bridge activity beacon"],"fullName":"bridge activity beacon a failing beacon transport never disturbs delivery, replies, or the host","status":"passed","title":"a failing beacon transport never disturbs delivery, replies, or the host","duration":4177.068375,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451687690,"endTime":1788451696378.0684,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/client/bridge-core-beacon.test.ts"},{"assertionResults":[{"ancestorTitles":["bundle text sanitization"],"fullName":"bundle text sanitization strips every bidirectional control while keeping the visible text","status":"passed","title":"strips every bidirectional control while keeping the visible text","duration":3.3274590000000046,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["bundle text sanitization"],"fullName":"bundle text sanitization strips every zero-width and invisible character","status":"passed","title":"strips every zero-width and invisible character","duration":0.3095830000000035,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["bundle text sanitization"],"fullName":"bundle text sanitization defuses a trojan-source style reordering attack in one pass","status":"passed","title":"defuses a trojan-source style reordering attack in one pass","duration":0.13716699999997672,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["bundle text sanitization"],"fullName":"bundle text sanitization leaves ordinary multilingual text, whitespace, and punctuation alone","status":"passed","title":"leaves ordinary multilingual text, whitespace, and punctuation alone","duration":0.05791700000000333,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["bundle text sanitization"],"fullName":"bundle text sanitization the rendered bundle strips hostile controls from body, note, and quoted selection","status":"passed","title":"the rendered bundle strips hostile controls from body, note, and quoted selection","duration":0.48816599999997834,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699607,"endTime":1788451699611.4883,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/client/bridge-core-sanitization.test.ts"},{"assertionResults":[{"ancestorTitles":["claude channel bridge"],"fullName":"claude channel bridge a dispatched bundle arrives as a channel notification and the tool closes the loop","status":"passed","title":"a dispatched bundle arrives as a channel notification and the tool closes the loop","duration":2799.905333,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451687668,"endTime":1788451690467.9053,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/client/claude-channel.test.ts"},{"assertionResults":[{"ancestorTitles":["file publication client"],"fullName":"file publication client publishes an ordinary file, a complete directory, and an optimistic new version","status":"passed","title":"publishes an ordinary file, a complete directory, and an optimistic new version","duration":258.202584,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["file publication client"],"fullName":"file publication client classifies unsafe filesystem inputs before it creates an upload","status":"passed","title":"classifies unsafe filesystem inputs before it creates an upload","duration":6.574458999999933,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["file publication client"],"fullName":"file publication client fails closed for invalid credentials, invalid server origins, and cross-origin upload plans","status":"passed","title":"fails closed for invalid credentials, invalid server origins, and cross-origin upload plans","duration":10.19399999999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["file publication client"],"fullName":"file publication client rejects incomplete and malformed plans and reports an unavailable server as protocol failures","status":"passed","title":"rejects incomplete and malformed plans and reports an unavailable server as protocol failures","duration":41.969875,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["file publication client"],"fullName":"file publication client uses deterministic media types and a safe binary fallback","status":"passed","title":"uses deterministic media types and a safe binary fallback","duration":0.141208000000006,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451695061,"endTime":1788451695378.141,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/client/file-publication-client.test.ts"},{"assertionResults":[{"ancestorTitles":["opencode bridge adapter"],"fullName":"opencode bridge adapter registers as kind opencode, holds delivery until a top-level session exists, injects through promptAsync, and beacons each work boundary","status":"passed","title":"registers as kind opencode, holds delivery until a top-level session exists, injects through promptAsync, and beacons each work boundary","duration":5334.985,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["opencode bridge adapter"],"fullName":"opencode bridge adapter fails open when the plugin context lacks the expected surface: no registration, no crash, an honest tool error","status":"passed","title":"fails open when the plugin context lacks the expected surface: no registration, no crash, an honest tool error","duration":962.1376249999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["opencode bridge adapter"],"fullName":"opencode bridge adapter DSP-013-F: a session deleted during injection fails that dispatch, releases its comment, and the same bridge delivers the next dispatch","status":"passed","title":"DSP-013-F: a session deleted during injection fails that dispatch, releases its comment, and the same bridge delivers the next dispatch","duration":5277.451625000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451687694,"endTime":1788451699268.4517,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/client/opencode-bridge.test.ts"},{"assertionResults":[{"ancestorTitles":["pi bridge core building blocks"],"fullName":"pi bridge core building blocks renders the recorded bundle template with note, paths, selections, and instruction","status":"passed","title":"renders the recorded bundle template with note, paths, selections, and instruction","duration":1.1153750000000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["pi bridge core building blocks"],"fullName":"pi bridge core building blocks omits the note line when absent and bounds long selections to the cap","status":"passed","title":"omits the note line when absent and bounds long selections to the cap","duration":0.1640000000000157,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["pi bridge core building blocks"],"fullName":"pi bridge core building blocks hostile slash-leading fields can never produce a slash-leading message","status":"passed","title":"hostile slash-leading fields can never produce a slash-leading message","duration":0.094333000000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["pi bridge core building blocks"],"fullName":"pi bridge core building blocks connection keys are stable sha-256 digests of host and directory","status":"passed","title":"connection keys are stable sha-256 digests of host and directory","duration":0.8905420000000106,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["pi bridge core building blocks"],"fullName":"pi bridge core building blocks the display name prefers the override and falls back to the basename","status":"passed","title":"the display name prefers the override and falls back to the basename","duration":0.14595800000000736,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["pi bridge core building blocks"],"fullName":"pi bridge core building blocks environment configuration wins over local discovery and normalizes the origin","status":"passed","title":"environment configuration wins over local discovery and normalizes the origin","duration":7.728041999999988,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["pi bridge core building blocks"],"fullName":"pi bridge core building blocks local discovery resolves the loopback service record and token","status":"passed","title":"local discovery resolves the loopback service record and token","duration":5.864292000000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["pi bridge core building blocks"],"fullName":"pi bridge core building blocks no configuration, a non-loopback record, or a short token stays dormant","status":"passed","title":"no configuration, a non-loopback record, or a short token stays dormant","duration":9.768499999999989,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699469,"endTime":1788451699494.7686,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/client/pi-bridge-core.test.ts"},{"assertionResults":[{"ancestorTitles":["tool-result nudge composition"],"fullName":"tool-result nudge composition picks exactly one kind in priority order and nothing when nothing applies","status":"passed","title":"picks exactly one kind in priority order and nothing when nothing applies","duration":1.5139579999999881,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["tool-result nudge composition"],"fullName":"tool-result nudge composition strips bidirectional and invisible characters from anything a nudge quotes","status":"passed","title":"strips bidirectional and invisible characters from anything a nudge quotes","duration":0.3152079999999984,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["tool-result nudge composition"],"fullName":"tool-result nudge composition bounds one block and appends it as a trailing text item only","status":"passed","title":"bounds one block and appends it as a trailing text item only","duration":0.734375,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699568,"endTime":1788451699570.7344,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/client/tool-result-nudges.test.ts"},{"assertionResults":[{"ancestorTitles":["WebMCP mutation echo counts"],"fullName":"WebMCP mutation echo counts resolving the last open thread counts it resolved before the view commits","status":"passed","title":"resolving the last open thread counts it resolved before the view commits","duration":1.0251669999999962,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["WebMCP mutation echo counts"],"fullName":"WebMCP mutation echo counts a thread the view has not loaded yet is counted from the fresh record","status":"passed","title":"a thread the view has not loaded yet is counted from the fresh record","duration":0.16566600000000165,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["WebMCP mutation echo counts"],"fullName":"WebMCP mutation echo counts an unchanged thread leaves the counts as the view has them","status":"passed","title":"an unchanged thread leaves the counts as the view has them","duration":0.15083300000000577,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699555,"endTime":1788451699557.151,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/client/webmcp-counts.test.ts"},{"assertionResults":[{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract normalizes the shared defaults and accepts each native provider shape","status":"passed","title":"normalizes the shared defaults and accepts each native provider shape","duration":9.055457999999987,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract accepts isolated private DNS names without requiring a public suffix","status":"passed","title":"accepts isolated private DNS names without requiring a public suffix","duration":0.7179580000000101,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract rejects floating image tag before a provider write","status":"passed","title":"rejects floating image tag before a provider write","duration":1.1681669999999826,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract rejects same registrable content domain before a provider write","status":"passed","title":"rejects same registrable content domain before a provider write","duration":0.32241700000002993,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract rejects same private DNS boundary before a provider write","status":"passed","title":"rejects same private DNS boundary before a provider write","duration":0.36624999999997954,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract rejects reversed capacity before a provider write","status":"passed","title":"rejects reversed capacity before a provider write","duration":0.18645900000001348,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract rejects disabled production deletion protection before a provider write","status":"passed","title":"rejects disabled production deletion protection before a provider write","duration":0.5325420000000349,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract rejects missing public DNS before a provider write","status":"passed","title":"rejects missing public DNS before a provider write","duration":0.42533400000002075,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract rejects one zone for isolated domains before a provider write","status":"passed","title":"rejects one zone for isolated domains before a provider write","duration":0.2715000000000032,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract rejects incomplete WorkOS configuration before a provider write","status":"passed","title":"rejects incomplete WorkOS configuration before a provider write","duration":0.5165000000000077,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract rejects credential-bearing telemetry URL before a provider write","status":"passed","title":"rejects credential-bearing telemetry URL before a provider write","duration":0.4448330000000169,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract rejects credential-bearing state backend before a provider write","status":"passed","title":"rejects credential-bearing state backend before a provider write","duration":0.32095800000001873,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract rejects main stack state-backend creation before a provider write","status":"passed","title":"rejects main stack state-backend creation before a provider write","duration":0.23366699999996854,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract rejects unsupported direct Azure target before a provider write","status":"passed","title":"rejects unsupported direct Azure target before a provider write","duration":0.13766700000002174,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract rejects local Alchemy state outside development before a provider write","status":"passed","title":"rejects local Alchemy state outside development before a provider write","duration":0.2933330000000183,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract rejects invalid Cloudflare compatibility date before a provider write","status":"passed","title":"rejects invalid Cloudflare compatibility date before a provider write","duration":0.27174999999999727,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract rejects non-global Cloudflare region before a provider write","status":"passed","title":"rejects non-global Cloudflare region before a provider write","duration":0.3662909999999897,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract accepts exact secret-free outputs and binds URLs to the requested stack","status":"passed","title":"accepts exact secret-free outputs and binds URLs to the requested stack","duration":0.9531670000000076,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract rejects output drift, extra output keys, credential URLs, and known secrets","status":"passed","title":"rejects output drift, extra output keys, credential URLs, and known secrets","duration":1.6345000000000027,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract keeps partial evidence for diagnosis but requires every passing gate for release","status":"passed","title":"keeps partial evidence for diagnosis but requires every passing gate for release","duration":1.771665999999982,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract rejects evidence for the wrong tool, impossible timestamps, and credential locations","status":"passed","title":"rejects evidence for the wrong tool, impossible timestamps, and credential locations","duration":0.8300830000000019,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared cloud deployment contract"],"fullName":"shared cloud deployment contract rejects duplicate release checks and unknown evidence fields","status":"passed","title":"rejects duplicate release checks and unknown evidence fields","duration":0.5535830000000033,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699664,"endTime":1788451699685.5535,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/deployment/cloud-deployment-contract.test.ts"},{"assertionResults":[{"ancestorTitles":["download filenames"],"fullName":"download filenames unsafe header characters cannot escape the attachment filename","status":"passed","title":"unsafe header characters cannot escape the attachment filename","duration":1.264916999999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["download filenames"],"fullName":"download filenames an unusable filename gets a stable portable fallback","status":"passed","title":"an unusable filename gets a stable portable fallback","duration":0.22758299999999565,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699603,"endTime":1788451699604.265,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/http/content-disposition.test.ts"},{"assertionResults":[{"ancestorTitles":["linked artifacts over the local HTTP boundary"],"fullName":"linked artifacts over the local HTTP boundary a file links in place, drifts, and captures a new version","status":"passed","title":"a file links in place, drifts, and captures a new version","duration":270.972792,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked artifacts over the local HTTP boundary"],"fullName":"linked artifacts over the local HTTP boundary every linked route answers the stable shape while the capability is off","status":"passed","title":"every linked route answers the stable shape while the capability is off","duration":114.22133300000007,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked artifacts over the local HTTP boundary"],"fullName":"linked artifacts over the local HTTP boundary the live origin streams current disk bytes to a session holder only","status":"passed","title":"the live origin streams current disk bytes to a session holder only","duration":329.8208330000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451697292,"endTime":1788451698007.8208,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/http/linked-artifacts.test.ts"},{"assertionResults":[{"ancestorTitles":["Node server response compression and asset caching"],"fullName":"Node server response compression and asset caching foundation: large JSON API responses are gzip-compressed when accepted","status":"passed","title":"foundation: large JSON API responses are gzip-compressed when accepted","duration":892.69825,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["Node server response compression and asset caching"],"fullName":"Node server response compression and asset caching foundation: static assets compress, revalidate with 304, and keep immutable caching","status":"passed","title":"foundation: static assets compress, revalidate with 304, and keep immutable caching","duration":95.7316659999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["Node server response compression and asset caching"],"fullName":"Node server response compression and asset caching foundation: brotli is preferred over gzip when the client allows both","status":"passed","title":"foundation: brotli is preferred over gzip when the client allows both","duration":61.55733400000008,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["Node server response compression and asset caching"],"fullName":"Node server response compression and asset caching foundation: the application shell compresses without losing revalidation","status":"passed","title":"foundation: the application shell compresses without losing revalidation","duration":44.432000000000016,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["Node server response compression and asset caching"],"fullName":"Node server response compression and asset caching foundation: small and binary responses stay identity-encoded","status":"passed","title":"foundation: small and binary responses stay identity-encoded","duration":30.40587500000015,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["Node server response compression and asset caching"],"fullName":"Node server response compression and asset caching foundation: range-capable content responses are never compressed","status":"passed","title":"foundation: range-capable content responses are never compressed","duration":59.475541999999905,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451693551,"endTime":1788451694735.4756,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/http/node-response-compression.test.ts"},{"assertionResults":[{"ancestorTitles":["Node web asset store"],"fullName":"Node web asset store foundation: assets are read and digested once per process","status":"passed","title":"foundation: assets are read and digested once per process","duration":21.17133299999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["Node web asset store"],"fullName":"Node web asset store foundation: HEAD serves headers without a body and misses are not cached","status":"passed","title":"foundation: HEAD serves headers without a body and misses are not cached","duration":35.967416000000014,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699172,"endTime":1788451699229.9675,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/http/node-web-asset-store.test.ts"},{"assertionResults":[{"ancestorTitles":["graceful HTTP shutdown"],"fullName":"graceful HTTP shutdown withdraws readiness and preserves accepted work before closing resources","status":"passed","title":"withdraws readiness and preserves accepted work before closing resources","duration":19.452958999999993,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["graceful HTTP shutdown"],"fullName":"graceful HTTP shutdown terminates stuck work at the configured deadline before closing resources","status":"passed","title":"terminates stuck work at the configured deadline before closing resources","duration":28.454916999999995,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699408,"endTime":1788451699456.4548,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/lifecycle/graceful-http-shutdown.test.ts"},{"assertionResults":[{"ancestorTitles":["artifact catalog comment queries"],"fullName":"artifact catalog comment queries ART-011-B ART-011-F: comment filters and ordering run before keyset pagination","status":"passed","title":"ART-011-B ART-011-F: comment filters and ordering run before keyset pagination","duration":362.8835,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699057,"endTime":1788451699419.8835,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/artifact-catalog-comments.test.ts"},{"assertionResults":[{"ancestorTitles":["artifact comparisons"],"fullName":"artifact comparisons AUTH-004-B DIF-001-B DIF-002-B DIF-002-F DIF-003-B DIF-003-F DIF-004-B DIF-004-F DIF-005-B DIF-005-F: public content exposes no history while authenticated comparisons work without Git","status":"passed","title":"AUTH-004-B DIF-001-B DIF-002-B DIF-002-F DIF-003-B DIF-003-F DIF-004-B DIF-004-F DIF-005-B DIF-005-F: public content exposes no history while authenticated comparisons work without Git","duration":831.8990000000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451696020,"endTime":1788451696851.899,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/artifact-comparison.test.ts"},{"assertionResults":[{"ancestorTitles":["artifact lifecycle"],"fullName":"artifact lifecycle foundation: artifact and action lists use bounded stable cursors","status":"passed","title":"foundation: artifact and action lists use bounded stable cursors","duration":338.86004199999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["artifact lifecycle"],"fullName":"artifact lifecycle ART-006-B ART-006-F ART-007-B: deletion tombstones the artifact, blocks every read path, and retains committed versions","status":"passed","title":"ART-006-B ART-006-F ART-007-B: deletion tombstones the artifact, blocks every read path, and retains committed versions","duration":212.36516600000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["artifact lifecycle"],"fullName":"artifact lifecycle foundation: a tombstone cannot commit without its action record","status":"passed","title":"foundation: a tombstone cannot commit without its action record","duration":107.33995900000014,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451692630,"endTime":1788451693288.3398,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/artifact-lifecycle.test.ts"},{"assertionResults":[{"ancestorTitles":["artifact and version management"],"fullName":"artifact and version management ART-002-B ART-003-B ART-004-B VER-001-B VER-001-F: authenticated metadata exposes immutable history and exact earlier bytes","status":"passed","title":"ART-002-B ART-003-B ART-004-B VER-001-B VER-001-F: authenticated metadata exposes immutable history and exact earlier bytes","duration":212.085042,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["artifact and version management"],"fullName":"artifact and version management ART-005-B ART-005-F: restore and visibility changes are atomic, attributed, and fail closed","status":"passed","title":"ART-005-B ART-005-F: restore and visibility changes are atomic, attributed, and fail closed","duration":224.58020899999997,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451690900,"endTime":1788451691336.5803,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/artifact-management.test.ts"},{"assertionResults":[{"ancestorTitles":["project-wide artifact search"],"fullName":"project-wide artifact search ART-009-B ART-009-F: search matches normalized name substrings and exact tags before pagination","status":"passed","title":"ART-009-B ART-009-F: search matches normalized name substrings and exact tags before pagination","duration":332.53187500000007,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451695004,"endTime":1788451695336.532,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/artifact-search.test.ts"},{"assertionResults":[{"ancestorTitles":["artifact tags"],"fullName":"artifact tags ART-008-B ART-008-F: tags normalize, filter exactly, persist with the artifact, and reject invalid sets atomically","status":"passed","title":"ART-008-B ART-008-F: tags normalize, filter exactly, persist with the artifact, and reject invalid sets atomically","duration":372.299458,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451698596,"endTime":1788451698968.2996,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/artifact-tags.test.ts"},{"assertionResults":[{"ancestorTitles":["managed API-key rotation"],"fullName":"managed API-key rotation rotation preserves human and service attribution while replacing each credential","status":"passed","title":"rotation preserves human and service attribution while replacing each credential","duration":312.97849999999994,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699012,"endTime":1788451699324.9785,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/auth-009-api-key-rotation.test.ts"},{"assertionResults":[{"ancestorTitles":["generic OIDC browser login"],"fullName":"generic OIDC browser login AUTH-019-B: a real OIDC round trip admits the bootstrap administrator and reuses the issuer-qualified binding","status":"passed","title":"AUTH-019-B: a real OIDC round trip admits the bootstrap administrator and reuses the issuer-qualified binding","duration":105.01383299999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["generic OIDC browser login"],"fullName":"generic OIDC browser login AUTH-019-F: unadmitted, disavowed, and email-less OIDC identities are refused without members or sessions","status":"passed","title":"AUTH-019-F: unadmitted, disavowed, and email-less OIDC identities are refused without members or sessions","duration":39.39799999999991,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699578,"endTime":1788451699722.398,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/auth-019-oidc-login.test.ts"},{"assertionResults":[{"ancestorTitles":["OIDC id_token validation"],"fullName":"OIDC id_token validation AUTH-020-B: id_tokens skewed inside the thirty-second tolerance still complete login","status":"passed","title":"AUTH-020-B: id_tokens skewed inside the thirty-second tolerance still complete login","duration":126.22779100000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["OIDC id_token validation"],"fullName":"OIDC id_token validation AUTH-020-F: every token, state, and attempt defect is refused without a session, a member, or a leaked credential","status":"passed","title":"AUTH-020-F: every token, state, and attempt defect is refused without a session, a member, or a leaked credential","duration":314.96570900000006,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451695948,"endTime":1788451696388.9658,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/auth-020-oidc-validation.test.ts"},{"assertionResults":[{"ancestorTitles":["generic OIDC configuration"],"fullName":"generic OIDC configuration AUTH-021-B: a complete OIDC configuration serves browser login and no configured provider keeps keys working","status":"passed","title":"AUTH-021-B: a complete OIDC configuration serves browser login and no configured provider keeps keys working","duration":1060.181125,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["generic OIDC configuration"],"fullName":"generic OIDC configuration AUTH-021-F: partial, doubled, and malformed OIDC configuration fails startup or login without weakening the server","status":"passed","title":"AUTH-021-F: partial, doubled, and malformed OIDC configuration fails startup or login without weakening the server","duration":3515.075417,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451688877,"endTime":1788451693452.0754,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/auth-021-oidc-configuration.test.ts"},{"assertionResults":[{"ancestorTitles":["authorization policy"],"fullName":"authorization policy AUTH-008-B AUTH-008-F: standalone mutations use membership and explicit capabilities","status":"passed","title":"AUTH-008-B AUTH-008-F: standalone mutations use membership and explicit capabilities","duration":6.7470830000000035,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["authorization policy"],"fullName":"authorization policy foundation: another installation or an unscoped service cannot acquire authority","status":"passed","title":"foundation: another installation or an unscoped service cannot acquire authority","duration":0.4507089999999607,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["authorization policy"],"fullName":"authorization policy project discovery follows membership and explicit service authority","status":"passed","title":"project discovery follows membership and explicit service authority","duration":0.8367920000000026,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699687,"endTime":1788451699694.837,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/authorization-policy.test.ts"},{"assertionResults":[{"ancestorTitles":["local immutable blob storage"],"fullName":"local immutable blob storage ART-004-F PUB-004-F: a conflicting stream cannot replace an existing fingerprint","status":"passed","title":"ART-004-F PUB-004-F: a conflicting stream cannot replace an existing fingerprint","duration":66.528167,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699222,"endTime":1788451699288.528,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/blob-storage.test.ts"},{"assertionResults":[{"ancestorTitles":["extracted bridge core"],"fullName":"extracted bridge core BRP-001-B: the extracted core drives a fake host through register, claim, deliver, reply, and resolve against a real server","status":"passed","title":"BRP-001-B: the extracted core drives a fake host through register, claim, deliver, reply, and resolve against a real server","duration":4417.548417,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["extracted bridge core"],"fullName":"extracted bridge core BRP-001-F: the bridge core module graph reaches no Pi module and only host-neutral dependencies","status":"passed","title":"BRP-001-F: the bridge core module graph reaches no Pi module and only host-neutral dependencies","duration":70.51495800000066,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451687689,"endTime":1788451692177.515,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/brp-001-extracted-bridge-core.test.ts"},{"assertionResults":[{"ancestorTitles":["mailbox-tier dispatch inbox over MCP"],"fullName":"mailbox-tier dispatch inbox over MCP BRP-002-B: an MCP principal lists its inbox with implicit mailbox registration, claims the oldest dispatch as a rendered sanitized bundle, and reports delivered, and the agent listing shows the mailbox tier","status":"passed","title":"BRP-002-B: an MCP principal lists its inbox with implicit mailbox registration, claims the oldest dispatch as a rendered sanitized bundle, and reports delivered, and the agent listing shows the mailbox tier","duration":562.2027909999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["mailbox-tier dispatch inbox over MCP"],"fullName":"mailbox-tier dispatch inbox over MCP BRP-002-F: a second principal never sees the first principal's dispatches, claim with an empty inbox answers cleanly, and a delivered report for a dispatch the caller does not hold is refused","status":"passed","title":"BRP-002-F: a second principal never sees the first principal's dispatches, claim with an empty inbox answers cleanly, and a delivered report for a dispatch the caller does not hold is refused","duration":264.14750000000004,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451697872,"endTime":1788451698698.1475,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/brp-002-mailbox-inbox.test.ts"},{"assertionResults":[{"ancestorTitles":["comment threads pin one exact saved version"],"fullName":"comment threads pin one exact saved version CMT-001-B: a thread keeps naming its original artifact and version across later publishes and a restore","status":"passed","title":"CMT-001-B: a thread keeps naming its original artifact and version across later publishes and a restore","duration":479.356375,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["comment threads pin one exact saved version"],"fullName":"comment threads pin one exact saved version CMT-001-F: publishing and restoring change nothing on an existing thread and a thread on an unknown version is refused","status":"passed","title":"CMT-001-F: publishing and restoring change nothing on an existing thread and a thread on an unknown version is refused","duration":215.70170800000005,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451693891,"endTime":1788451694585.7017,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/cmt-001-exact-version-thread.test.ts"},{"assertionResults":[{"ancestorTitles":["comment paths are validated against the version manifest"],"fullName":"comment paths are validated against the version manifest CMT-002-B: a thread names one manifest entry path inside its version and reads that path back","status":"passed","title":"CMT-002-B: a thread names one manifest entry path inside its version and reads that path back","duration":156.88816700000007,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["comment paths are validated against the version manifest"],"fullName":"comment paths are validated against the version manifest CMT-002-F: a path outside that version's manifest is refused as an invalid comment and stores nothing","status":"passed","title":"CMT-002-F: a path outside that version's manifest is refused as an invalid comment and stores nothing","duration":179.20725000000004,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451691805,"endTime":1788451692141.2073,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/cmt-002-manifest-path.test.ts"},{"assertionResults":[{"ancestorTitles":["comment anchors stay opaque within their documented bounds"],"fullName":"comment anchors stay opaque within their documented bounds CMT-003-B: anchors of several shapes are stored and read back byte for byte","status":"passed","title":"CMT-003-B: anchors of several shapes are stored and read back byte for byte","duration":276.89637500000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["comment anchors stay opaque within their documented bounds"],"fullName":"comment anchors stay opaque within their documented bounds CMT-003-F: oversize anchors and out-of-range points are refused while a valid anchor stays unchanged","status":"passed","title":"CMT-003-F: oversize anchors and out-of-range points are refused while a valid anchor stays unchanged","duration":158.78641700000003,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451698523,"endTime":1788451698958.7864,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/cmt-003-anchor-opacity.test.ts"},{"assertionResults":[{"ancestorTitles":["comment replies are one level deep and open-thread only"],"fullName":"comment replies are one level deep and open-thread only CMT-004-B: an open thread collects replies that carry no replies of their own","status":"passed","title":"CMT-004-B: an open thread collects replies that carry no replies of their own","duration":139.20220900000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["comment replies are one level deep and open-thread only"],"fullName":"comment replies are one level deep and open-thread only CMT-004-F: a resolved thread refuses replies and a concurrent resolve never leaves a reply on a resolved thread","status":"passed","title":"CMT-004-F: a resolved thread refuses replies and a concurrent resolve never leaves a reply on a resolved thread","duration":148.300292,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451691278,"endTime":1788451691566.3003,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/cmt-004-reply-rules.test.ts"},{"assertionResults":[{"ancestorTitles":["resolving and reopening one comment thread"],"fullName":"resolving and reopening one comment thread CMT-005-B: one state change resolves and reopens a thread and records who changed it and when","status":"passed","title":"CMT-005-B: one state change resolves and reopens a thread and records who changed it and when","duration":193.947208,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["resolving and reopening one comment thread"],"fullName":"resolving and reopening one comment thread CMT-005-F: an unknown state value is refused and a resolved thread stays resolved on every read path","status":"passed","title":"CMT-005-F: an unknown state value is refused and a resolved thread stays resolved on every read path","duration":187.91712500000006,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451695143,"endTime":1788451695524.9172,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/cmt-005-state-transitions.test.ts"},{"assertionResults":[{"ancestorTitles":["comment read authority"],"fullName":"comment read authority CMT-006-B: an admitted member reads threads and replies on the application origin","status":"passed","title":"CMT-006-B: an admitted member reads threads and replies on the application origin","duration":275.081708,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["comment read authority"],"fullName":"comment read authority CMT-006-F: public-link viewers, anonymous requests, and the content origin never see comments","status":"passed","title":"CMT-006-F: public-link viewers, anonymous requests, and the content origin never see comments","duration":126.76854200000002,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451695170,"endTime":1788451695571.7686,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/cmt-006-comment-read-authority.test.ts"},{"assertionResults":[{"ancestorTitles":["comment write capability"],"fullName":"comment write capability CMT-007-B: a direct human member and a comment-write key open, answer, resolve, and reopen threads","status":"passed","title":"CMT-007-B: a direct human member and a comment-write key open, answer, resolve, and reopen threads","duration":431.743708,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["comment write capability"],"fullName":"comment write capability CMT-007-F: a key holding only artifact read authority is denied every comment mutation","status":"passed","title":"CMT-007-F: a key holding only artifact read authority is denied every comment mutation","duration":261.661333,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451697430,"endTime":1788451698123.6614,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/cmt-007-comment-write-capability.test.ts"},{"assertionResults":[{"ancestorTitles":["comment authorship"],"fullName":"comment authorship CMT-008-B: authors edit and delete their own comments while an administrator deletes another member's thread","status":"passed","title":"CMT-008-B: authors edit and delete their own comments while an administrator deletes another member's thread","duration":243.36808400000007,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["comment authorship"],"fullName":"comment authorship CMT-008-F: another member and an administrator cannot rewrite an author's comment while the administrator's delete is recorded","status":"passed","title":"CMT-008-F: another member and an administrator cannot rewrite an author's comment while the administrator's delete is recorded","duration":160.82187499999998,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451692653,"endTime":1788451693056.8218,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/cmt-008-comment-authorship.test.ts"},{"assertionResults":[{"ancestorTitles":["comment project scope"],"fullName":"comment project scope CMT-009-B: every comment operation runs inside its own project and returns project-scoped records","status":"passed","title":"CMT-009-B: every comment operation runs inside its own project and returns project-scoped records","duration":291.451375,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["comment project scope"],"fullName":"comment project scope CMT-009-F: identifiers presented under another project or installation are not found without disclosure","status":"passed","title":"CMT-009-F: identifiers presented under another project or installation are not found without disclosure","duration":321.3900839999999,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451698464,"endTime":1788451699077.3901,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/cmt-009-comment-project-scope.test.ts"},{"assertionResults":[{"ancestorTitles":["comment create idempotency"],"fullName":"comment create idempotency CMT-010-B: repeated thread and reply creates with one key replay the original records","status":"passed","title":"CMT-010-B: repeated thread and reply creates with one key replay the original records","duration":222.79387500000007,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["comment create idempotency"],"fullName":"comment create idempotency CMT-010-F: one key with different input conflicts and writes no duplicate comment","status":"passed","title":"CMT-010-F: one key with different input conflicts and writes no duplicate comment","duration":185.32100000000003,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451695091,"endTime":1788451695499.321,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/cmt-010-comment-idempotency.test.ts"},{"assertionResults":[{"ancestorTitles":["comment mutations and the action ledger"],"fullName":"comment mutations and the action ledger CMT-011-B: every comment mutation appends an attributed action naming the artifact and version","status":"passed","title":"CMT-011-B: every comment mutation appends an attributed action naming the artifact and version","duration":431.01124999999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["comment mutations and the action ledger"],"fullName":"comment mutations and the action ledger CMT-011-F: a comment mutation cannot commit when its action record is refused","status":"passed","title":"CMT-011-F: a comment mutation cannot commit when its action record is refused","duration":159.47416699999985,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451693913,"endTime":1788451694503.474,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/cmt-011-comment-action-ledger.test.ts"},{"assertionResults":[{"ancestorTitles":["comment surface parity and change polling"],"fullName":"comment surface parity and change polling CMT-012-B: HTTP and MCP drive the same comment operations and page changes with a since time and a cursor","status":"passed","title":"CMT-012-B: HTTP and MCP drive the same comment operations and page changes with a since time and a cursor","duration":462.155291,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["comment surface parity and change polling"],"fullName":"comment surface parity and change polling CMT-012-F: MCP and HTTP agree for one principal and a since poll resuming from the previous pass start misses no change","status":"passed","title":"CMT-012-F: MCP and HTTP agree for one principal and a since poll resuming from the previous pass start misses no change","duration":346.441292,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451697465,"endTime":1788451698273.4414,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/cmt-012-comment-surface-parity.test.ts"},{"assertionResults":[{"ancestorTitles":["version file route for the review viewer"],"fullName":"version file route for the review viewer CMT-013-B: an artifact-read principal reads exact manifest bytes with non-renderable headers","status":"passed","title":"CMT-013-B: an artifact-read principal reads exact manifest bytes with non-renderable headers","duration":344.584709,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["version file route for the review viewer"],"fullName":"version file route for the review viewer foundation: version file responses revalidate and serve byte ranges","status":"passed","title":"foundation: version file responses revalidate and serve byte ranges","duration":324.4429170000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["version file route for the review viewer"],"fullName":"version file route for the review viewer CMT-013-F: unauthenticated, public-link, and read-incapable requests get no manifest bytes","status":"passed","title":"CMT-013-F: unauthenticated, public-link, and read-incapable requests get no manifest bytes","duration":200.08024999999998,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451693718,"endTime":1788451694587.0803,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/cmt-013-version-file-route.test.ts"},{"assertionResults":[{"ancestorTitles":["dispatched comment deletion"],"fullName":"dispatched comment deletion CMT-020-B: queued, claimed, and delivered dispatches hold comments while addressed, failed, and canceled dispatches release them","status":"passed","title":"CMT-020-B: queued, claimed, and delivered dispatches hold comments while addressed, failed, and canceled dispatches release them","duration":293.389209,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["dispatched comment deletion"],"fullName":"dispatched comment deletion CMT-020-F: a concurrent send and delete commits only one complete SQLite outcome","status":"passed","title":"CMT-020-F: a concurrent send and delete commits only one complete SQLite outcome","duration":73.07408299999997,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451695232,"endTime":1788451695599.074,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/cmt-020-dispatched-comment-deletion.test.ts"},{"assertionResults":[{"ancestorTitles":["complete immutable version downloads"],"fullName":"complete immutable version downloads CMT-021-B: a permitted user downloads the selected version as a deterministic path-preserving ZIP","status":"passed","title":"CMT-021-B: a permitted user downloads the selected version as a deterministic path-preserving ZIP","duration":267.00179199999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["complete immutable version downloads"],"fullName":"complete immutable version downloads CMT-021-F: unauthorized and mismatched version requests disclose no artifact bytes","status":"passed","title":"CMT-021-F: unauthorized and mismatched version requests disclose no artifact bytes","duration":394.286167,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451697306,"endTime":1788451697967.2861,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/cmt-021-version-download.test.ts"},{"assertionResults":[{"ancestorTitles":["complete-site publishing"],"fullName":"complete-site publishing MAN-006-B CNT-005-B: a canonical complete site serves every declared file from one exact version origin","status":"passed","title":"MAN-006-B CNT-005-B: a canonical complete site serves every declared file from one exact version origin","duration":256.40245799999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["complete-site publishing"],"fullName":"complete-site publishing foundation: a configured public origin owns every application URL behind a TLS-terminating proxy","status":"passed","title":"foundation: a configured public origin owns every application URL behind a TLS-terminating proxy","duration":30.736125000000015,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["complete-site publishing"],"fullName":"complete-site publishing PUB-001-B PUB-003-B: a staged site resumes after restart and commits only after every file is verified","status":"passed","title":"PUB-001-B PUB-003-B: a staged site resumes after restart and commits only after every file is verified","duration":93.78554199999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["complete-site publishing"],"fullName":"complete-site publishing MAN-005-F: absent entries, duplicate paths, and portable-name collisions are rejected before upload creation","status":"passed","title":"MAN-005-F: absent entries, duplicate paths, and portable-name collisions are rejected before upload creation","duration":35.209082999999964,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["complete-site publishing"],"fullName":"complete-site publishing CNT-007-B CNT-007-F: SPA fallback is explicit, navigation-only, and never replaces an exact file","status":"passed","title":"CNT-007-B CNT-007-F: SPA fallback is explicit, navigation-only, and never replaces an exact file","duration":104.73858299999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["complete-site publishing"],"fullName":"complete-site publishing immutable files support one bounded byte range without buffering the full object","status":"passed","title":"immutable files support one bounded byte range without buffering the full object","duration":56.97945799999991,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["complete-site publishing"],"fullName":"complete-site publishing CNT-002-B CNT-002-F: ordinary files use browser-native or download-safe responses","status":"passed","title":"CNT-002-B CNT-002-F: ordinary files use browser-native or download-safe responses","duration":264.4285839999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["complete-site publishing"],"fullName":"complete-site publishing foundation: SPA routing rejects a non-HTML entry before allocating upload slots","status":"passed","title":"foundation: SPA routing rejects a non-HTML entry before allocating upload slots","duration":35.165624999999864,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["complete-site publishing"],"fullName":"complete-site publishing foundation: HTTP upload locations reject invalid credentials and another installation","status":"passed","title":"foundation: HTTP upload locations reject invalid credentials and another installation","duration":44.8326669999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["complete-site publishing"],"fullName":"complete-site publishing PUB-003-F: missing, truncated, oversized, and fingerprint-mismatched staged files cannot commit","status":"passed","title":"PUB-003-F: missing, truncated, oversized, and fingerprint-mismatched staged files cannot commit","duration":39.30458300000009,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451690414,"endTime":1788451691375.3047,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/complete-site.test.ts"},{"assertionResults":[{"ancestorTitles":["content access lifecycle"],"fullName":"content access lifecycle foundation: bootstrap and content-session expiration fail closed","status":"passed","title":"foundation: bootstrap and content-session expiration fail closed","duration":143.03087499999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["content access lifecycle"],"fullName":"content access lifecycle bootstrap replay, tampering, and host substitution do not grant a session","status":"passed","title":"bootstrap replay, tampering, and host substitution do not grant a session","duration":120.26791700000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["content access lifecycle"],"fullName":"content access lifecycle preview lease foundation: tampered leases fail and valid leases expire at their exact boundary","status":"passed","title":"preview lease foundation: tampered leases fail and valid leases expire at their exact boundary","duration":58.709957999999915,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451694331,"endTime":1788451694652.71,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/content-access-lifecycle.test.ts"},{"assertionResults":[{"ancestorTitles":["registered agent registry"],"fullName":"registered agent registry DSP-001-B: one connection key upserts one self-named agent whose connected state follows its claim polling","status":"passed","title":"DSP-001-B: one connection key upserts one self-named agent whose connected state follows its claim polling","duration":3417.1040829999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["registered agent registry"],"fullName":"registered agent registry DSP-001-F: reaping a stale agent row leaves its dispatch attributed, and another installation's agent never appears","status":"passed","title":"DSP-001-F: reaping a stale agent row leaves its dispatch attributed, and another installation's agent never appears","duration":222.12270799999988,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451687670,"endTime":1788451691309.1228,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/dsp-001-agent-registry.test.ts"},{"assertionResults":[{"ancestorTitles":["agent connection authority"],"fullName":"agent connection authority DSP-002-B: an agent-connect key and the local all-capability token register, claim, and report delivered and failed","status":"passed","title":"DSP-002-B: an agent-connect key and the local all-capability token register, claim, and report delivered and failed","duration":555.5588339999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["agent connection authority"],"fullName":"agent connection authority DSP-002-F: a read-only key and a direct human are refused every agent operation, and a report from a non-holder is a state conflict","status":"passed","title":"DSP-002-F: a read-only key and a direct human are refused every agent operation, and a report from a non-holder is a state conflict","duration":302.20120899999984,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451696074,"endTime":1788451696932.2012,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/dsp-002-agent-connect-authority.test.ts"},{"assertionResults":[{"ancestorTitles":["agent dispatch send"],"fullName":"agent dispatch send DSP-003-B: one send becomes one ordered dispatch, and the same idempotency key replays the original","status":"passed","title":"DSP-003-B: one send becomes one ordered dispatch, and the same idempotency key replays the original","duration":921.8779160000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["agent dispatch send"],"fullName":"agent dispatch send DSP-003-F: an empty, oversized, cross-project, resolved, or already dispatched bundle is rejected without marking a thread","status":"passed","title":"DSP-003-F: an empty, oversized, cross-project, resolved, or already dispatched bundle is rejected without marking a thread","duration":237.94691699999998,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451695870,"endTime":1788451697029.947,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/dsp-003-dispatch-send.test.ts"},{"assertionResults":[{"ancestorTitles":["dispatched thread visibility"],"fullName":"dispatched thread visibility DSP-004-B: HTTP, MCP, and the web application hide a sent bundle by default and answer the same for every dispatched filter","status":"passed","title":"DSP-004-B: HTTP, MCP, and the web application hide a sent bundle by default and answer the same for every dispatched filter","duration":339.789333,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["dispatched thread visibility"],"fullName":"dispatched thread visibility DSP-004-F: no default listing on any surface can show a dispatched thread, and the filter never reaches another project or installation","status":"passed","title":"DSP-004-F: no default listing on any surface can show a dispatched thread, and the filter never reaches another project or installation","duration":268.555792,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451696811,"endTime":1788451697419.556,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/dsp-004-dispatched-thread-visibility.test.ts"},{"assertionResults":[{"ancestorTitles":["dispatch claim order"],"fullName":"dispatch claim order DSP-005-B: three queued bundles are claimed oldest first, one at a time, and a waiting poll answers inside its bound","status":"passed","title":"DSP-005-B: three queued bundles are claimed oldest first, one at a time, and a waiting poll answers inside its bound","duration":2387.001458,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["dispatch claim order"],"fullName":"dispatch claim order DSP-005-F: a second claim while one is held answers empty, and simultaneous claims never hand one bundle to two agents","status":"passed","title":"DSP-005-F: a second claim while one is held answers empty, and simultaneous claims never hand one bundle to two agents","duration":2088.60225,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451687669,"endTime":1788451692144.6023,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/dsp-005-claim-order.test.ts"},{"assertionResults":[{"ancestorTitles":["dispatch claim lease"],"fullName":"dispatch claim lease DSP-006-B: an expired lease returns the bundle to the queue and the restarted agent claims it again","status":"passed","title":"DSP-006-B: an expired lease returns the bundle to the queue and the restarted agent claims it again","duration":145.30775,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["dispatch claim lease"],"fullName":"dispatch claim lease DSP-006-F: a claimer that returns after its lease expired cannot report, and a reclaim never leaves two claims active","status":"passed","title":"DSP-006-F: a claimer that returns after its lease expired cannot report, and a reclaim never leaves two claims active","duration":379.0167090000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451693493,"endTime":1788451694018.0166,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/dsp-006-claim-lease.test.ts"},{"assertionResults":[{"ancestorTitles":["agent dispatch state machine"],"fullName":"agent dispatch state machine DSP-007-B: one dispatch walks queued, claimed, delivered, and addressed with its own stamp on every transition","status":"passed","title":"DSP-007-B: one dispatch walks queued, claimed, delivered, and addressed with its own stamp on every transition","duration":437.05720799999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["agent dispatch state machine"],"fullName":"agent dispatch state machine DSP-007-F: every transition outside the machine is a state conflict that moves no recorded time","status":"passed","title":"DSP-007-F: every transition outside the machine is a state conflict that moves no recorded time","duration":374.72962499999994,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451696099,"endTime":1788451696910.7297,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/dsp-007-dispatch-state-machine.test.ts"},{"assertionResults":[{"ancestorTitles":["agent dispatch addressed inference"],"fullName":"agent dispatch addressed inference DSP-008-B: a delivered bundle becomes addressed once every thread resolves, stamped when the read first observes it","status":"passed","title":"DSP-008-B: a delivered bundle becomes addressed once every thread resolves, stamped when the read first observes it","duration":365.188125,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["agent dispatch addressed inference"],"fullName":"agent dispatch addressed inference DSP-008-F: an unresolved thread holds the dispatch delivered, and reopening one afterwards neither undoes nor restamps addressed","status":"passed","title":"DSP-008-F: an unresolved thread holds the dispatch delivered, and reopening one afterwards neither undoes nor restamps addressed","duration":245.22704199999998,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451698827,"endTime":1788451699438.227,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/dsp-008-addressed-inference.test.ts"},{"assertionResults":[{"ancestorTitles":["agent dispatch thread release"],"fullName":"agent dispatch thread release DSP-009-B: failure, cancellation, and an agent that stops polling each release their threads back into the default listings","status":"passed","title":"DSP-009-B: failure, cancellation, and an agent that stops polling each release their threads back into the default listings","duration":334.32054200000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["agent dispatch thread release"],"fullName":"agent dispatch thread release DSP-009-F: an addressed dispatch releases nothing and a held thread joins no second dispatch until it is released","status":"passed","title":"DSP-009-F: an addressed dispatch releases nothing and a held thread joins no second dispatch until it is released","duration":427.95995800000003,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451696012,"endTime":1788451696773.96,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/dsp-009-dispatch-release.test.ts"},{"assertionResults":[{"ancestorTitles":["agent dispatch authorization"],"fullName":"agent dispatch authorization DSP-010-B: a human member and a manage-any key send and cancel while read authority lists and reads dispatches","status":"passed","title":"DSP-010-B: a human member and a manage-any key send and cancel while read authority lists and reads dispatches","duration":399.61645799999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["agent dispatch authorization"],"fullName":"agent dispatch authorization a foreign agent-connect key cannot claim or report for an agent it did not register","status":"passed","title":"a foreign agent-connect key cannot claim or report for an agent it did not register","duration":64.795208,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["agent dispatch authorization"],"fullName":"agent dispatch authorization DSP-010-F: an agent-connect key can neither send nor cancel, and identifiers from another project or installation are not found without disclosure","status":"passed","title":"DSP-010-F: an agent-connect key can neither send nor cancel, and identifiers from another project or installation are not found without disclosure","duration":133.91620899999998,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451687670,"endTime":1788451688267.9163,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/dsp-010-dispatch-authorization.test.ts"},{"assertionResults":[{"ancestorTitles":["bridge bundle rendering"],"fullName":"bridge bundle rendering DSP-011-B: a bundle renders as one message with sender line, note, numbered items, quoted selection, bodies, thread ids, and the reply-and-resolve instruction, delivered as follow-up","status":"passed","title":"DSP-011-B: a bundle renders as one message with sender line, note, numbered items, quoted selection, bodies, thread ids, and the reply-and-resolve instruction, delivered as follow-up","duration":4475.178667,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["bridge bundle rendering"],"fullName":"bridge bundle rendering DSP-011-F: hostile bundle text never yields a leading slash and every delivery names follow-up, never steering","status":"passed","title":"DSP-011-F: hostile bundle text never yields a leading slash and every delivery names follow-up, never steering","duration":1113.37525,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451687689,"endTime":1788451693277.3752,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/dsp-011-bridge-bundle-render.test.ts"},{"assertionResults":[{"ancestorTitles":["bridge fail-open discipline"],"fullName":"bridge fail-open discipline DSP-012-B: without configuration one notice and no polling; configured, it registers, claims, holds through compaction, reports delivery, and shuts down cleanly","status":"passed","title":"DSP-012-B: without configuration one notice and no polling; configured, it registers, claims, holds through compaction, reports delivery, and shuts down cleanly","duration":5511.015584,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["bridge fail-open discipline"],"fullName":"bridge fail-open discipline DSP-013-B: delivery waits for host admission, an asynchronous refusal fails only that dispatch, and the loop accepts the next bundle","status":"passed","title":"DSP-013-B: delivery waits for host admission, an asynchronous refusal fails only that dispatch, and the loop accepts the next bundle","duration":5231.943875,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["bridge fail-open discipline"],"fullName":"bridge fail-open discipline DSP-012-F: an unreachable backend backs off within bounds and a stale host handle ends the loop, with no error reaching the host","status":"passed","title":"DSP-012-F: an unreachable backend backs off within bounds and a stale host handle ends the loop, with no error reaching the host","duration":3295.1726670000007,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451687689,"endTime":1788451701728.1726,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/dsp-012-bridge-fail-open.test.ts"},{"assertionResults":[{"ancestorTitles":["Git history capability monitoring"],"fullName":"Git history capability monitoring Git monitor lifecycle: a provider outage recovers and shutdown stops later checks","status":"passed","title":"Git monitor lifecycle: a provider outage recovers and shutdown stops later checks","duration":12.857708000000002,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699665,"endTime":1788451699677.8577,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/git-history-capability-monitor.test.ts"},{"assertionResults":[{"ancestorTitles":["optional Git handoff configuration and discovery"],"fullName":"optional Git handoff configuration and discovery GIT-010 GIT-012 GIT-014 foundation: absent and off configurations expose bounded disabled defaults without reading provider companions","status":"passed","title":"GIT-010 GIT-012 GIT-014 foundation: absent and off configurations expose bounded disabled defaults without reading provider companions","duration":4.656833000000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["optional Git handoff configuration and discovery"],"fullName":"optional Git handoff configuration and discovery GIT-010 GIT-012 foundation: complete Node REST configuration is parsed, while hostile or malformed families degrade without exposing secrets","status":"passed","title":"GIT-010 GIT-012 foundation: complete Node REST configuration is parsed, while hostile or malformed families degrade without exposing secrets","duration":14.223666999999978,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["optional Git handoff configuration and discovery"],"fullName":"optional Git handoff configuration and discovery GIT-010 GIT-013 foundation: a successful read-only check persists identity, reports live parity, and rejects a changed destination before another provider call","status":"passed","title":"GIT-010 GIT-013 foundation: a successful read-only check persists identity, reports live parity, and rejects a changed destination before another provider call","duration":146.42320900000004,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699526,"endTime":1788451699692.423,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/git-history-discovery.test.ts"},{"assertionResults":[{"ancestorTitles":["simple per-project Git history setting"],"fullName":"simple per-project Git history setting GIT-008-B GIT-012-B: an explicitly enabled project backfills while every other project stays off","status":"passed","title":"GIT-008-B GIT-012-B: an explicitly enabled project backfills while every other project stays off","duration":8123.283041999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["simple per-project Git history setting"],"fullName":"simple per-project Git history setting foundation: an unconfigured deployment cannot estimate or enable, and the default remains off","status":"passed","title":"foundation: an unconfigured deployment cannot estimate or enable, and the default remains off","duration":32.295374999999694,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["simple per-project Git history setting"],"fullName":"simple per-project Git history setting GIT-009-F: retrying an already-enabled setting succeeds during a provider outage","status":"passed","title":"GIT-009-F: retrying an already-enabled setting succeeds during a provider outage","duration":39.3817080000008,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["simple per-project Git history setting"],"fullName":"simple per-project Git history setting GIT-002-F GIT-003-F GIT-008-F: a failed mirror resumes after process restart without a duplicate commit","status":"passed","title":"GIT-002-F GIT-003-F GIT-008-F: a failed mirror resumes after process restart without a duplicate commit","duration":6348.938334,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["simple per-project Git history setting"],"fullName":"simple per-project Git history setting GIT-005-F GIT-009-B: clone access is authorized and bounded, disablement preserves the repository, and artifact deletion removes it","status":"passed","title":"GIT-005-F GIT-009-B: clone access is authorized and bounded, disablement preserves the repository, and artifact deletion removes it","duration":4041.952624999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["simple per-project Git history setting"],"fullName":"simple per-project Git history setting GIT-004-B GIT-004-F: copy limits produce deterministic files and pointers across retry","status":"passed","title":"GIT-004-B GIT-004-F: copy limits produce deterministic files and pointers across retry","duration":4059.238458,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["simple per-project Git history setting"],"fullName":"simple per-project Git history setting GIT-014-B GIT-014-F: a logical budget pauses only Git and resumes after an explicit budget increase","status":"passed","title":"GIT-014-B GIT-014-F: a logical budget pauses only Git and resumes after an explicit budget increase","duration":4108.850375000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["simple per-project Git history setting"],"fullName":"simple per-project Git history setting GIT-011-B GIT-011-F: purge plans without provider access and resumes after partial deletion","status":"passed","title":"GIT-011-B GIT-011-F: purge plans without provider access and resumes after partial deletion","duration":2039.627375,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451687684,"endTime":1788451716478.6274,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/git-history-project-setting.test.ts"},{"assertionResults":[{"ancestorTitles":["Cloudflare Artifacts REST availability"],"fullName":"Cloudflare Artifacts REST availability GIT-010 GIT-013 foundation: the read-only namespace check is path-scoped, authenticated, bounded, and safely classified","status":"passed","title":"GIT-010 GIT-013 foundation: the read-only namespace check is path-scoped, authenticated, bounded, and safely classified","duration":40.61824999999999,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699595,"endTime":1788451699635.6182,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/git-history-provider-health.test.ts"},{"assertionResults":[{"ancestorTitles":["installation identity and access"],"fullName":"installation identity and access AUTH-024-F AUTH-027-B AUTH-027-F AUTH-028-F: bootstrap membership and managed keys fail closed","status":"passed","title":"AUTH-024-F AUTH-027-B AUTH-027-F AUTH-028-F: bootstrap membership and managed keys fail closed","duration":223.38887500000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["installation identity and access"],"fullName":"installation identity and access AUTH-023-B AUTH-023-F AUTH-024-B: local-owner browsers receive a stable session only across the loopback same-origin boundary","status":"passed","title":"AUTH-023-B AUTH-023-F AUTH-024-B: local-owner browsers receive a stable session only across the loopback same-origin boundary","duration":83.56016700000009,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["installation identity and access"],"fullName":"installation identity and access AUTH-025-B AUTH-025-F AUTH-026-F: private-team mode advertises its provider and has no local browser bootstrap route","status":"passed","title":"AUTH-025-B AUTH-025-F AUTH-026-F: private-team mode advertises its provider and has no local browser bootstrap route","duration":116.056375,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["installation identity and access"],"fullName":"installation identity and access concurrent private-team startup cannot seed two machine authorities","status":"passed","title":"concurrent private-team startup cannot seed two machine authorities","duration":64.76750000000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["installation identity and access"],"fullName":"installation identity and access AUTH-010-B AUTH-010-F AUTH-011-B AUTH-011-F AUTH-012-B AUTH-012-F: browser credentials stay on the application host and mutations require same-origin proof","status":"passed","title":"AUTH-010-B AUTH-010-F AUTH-011-B AUTH-011-F AUTH-012-B AUTH-012-F: browser credentials stay on the application host and mutations require same-origin proof","duration":56.487708999999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["installation identity and access"],"fullName":"installation identity and access AUTH-022-B AUTH-022-F: session authentication caching stays a bounded-staleness optimization","status":"passed","title":"AUTH-022-B AUTH-022-F: session authentication caching stays a bounded-staleness optimization","duration":74.70204200000012,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["installation identity and access"],"fullName":"installation identity and access AUTH-001-B AUTH-001-F AUTH-028-B: external login admits only the configured first administrator and consumes state once","status":"passed","title":"AUTH-001-B AUTH-001-F AUTH-028-B: external login admits only the configured first administrator and consumes state once","duration":93.64779199999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["installation identity and access"],"fullName":"installation identity and access external login reports a malformed verified identity as a typed conflict","status":"passed","title":"external login reports a malformed verified identity as a typed conflict","duration":31.811542000000145,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["installation identity and access"],"fullName":"installation identity and access a configured external bearer verifier shares the principal boundary without managed-key parser fallback","status":"passed","title":"a configured external bearer verifier shares the principal boundary without managed-key parser fallback","duration":27.885125000000016,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["installation identity and access"],"fullName":"installation identity and access API OAuth metadata and challenge name the exact API resource without enabling it by default","status":"passed","title":"API OAuth metadata and challenge name the exact API resource without enabling it by default","duration":30.73112500000002,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451692604,"endTime":1788451693407.7312,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/installation-identity.test.ts"},{"assertionResults":[{"ancestorTitles":["linked artifacts are off by default and reference in place"],"fullName":"linked artifacts are off by default and reference in place LNK-001-B: an enabled local deployment advertises the capability, links one file in place over HTTP and MCP, and never absorbs an unlinked file","status":"passed","title":"LNK-001-B: an enabled local deployment advertises the capability, links one file in place over HTTP and MCP, and never absorbs an unlinked file","duration":303.20087499999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked artifacts are off by default and reference in place"],"fullName":"linked artifacts are off by default and reference in place LNK-001-F: with the feature off the capability is absent, every linked route and tool answers the stable shape, and no file becomes an artifact","status":"passed","title":"LNK-001-F: with the feature off the capability is absent, every linked route and tool answers the stable shape, and no file becomes an artifact","duration":94.76354199999992,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451696833,"endTime":1788451697230.7634,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/lnk-001-off-by-default.test.ts"},{"assertionResults":[{"ancestorTitles":["linking a file publishes an ordinary first version"],"fullName":"linking a file publishes an ordinary first version LNK-002-B: one linked regular file becomes an artifact whose first version carries its verified bytes, manifest, and action","status":"passed","title":"LNK-002-B: one linked regular file becomes an artifact whose first version carries its verified bytes, manifest, and action","duration":269.95141699999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linking a file publishes an ordinary first version"],"fullName":"linking a file publishes an ordinary first version LNK-002-F: a path that is not a readable regular file creates nothing, and replaying one link key returns the original artifact","status":"passed","title":"LNK-002-F: a path that is not a readable regular file creates nothing, and replaying one link key returns the original artifact","duration":320.38200000000006,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451693781,"endTime":1788451694371.382,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/lnk-002-link-initial-capture.test.ts"},{"assertionResults":[{"ancestorTitles":["linked source freshness on ordinary metadata reads"],"fullName":"linked source freshness on ordinary metadata reads LNK-003-B: external modification, replacement, and removal move freshness while the version list and delivered bytes hold still","status":"passed","title":"LNK-003-B: external modification, replacement, and removal move freshness while the version list and delivered bytes hold still","duration":268.538875,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source freshness on ordinary metadata reads"],"fullName":"linked source freshness on ordinary metadata reads LNK-003-F: a refresh cannot write a version or an action, and a failed stat degrades only the freshness field","status":"passed","title":"LNK-003-F: a refresh cannot write a version or an action, and a failed stat degrades only the freshness field","duration":423.95504099999994,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451697350,"endTime":1788451698042.955,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/lnk-003-binding-freshness.test.ts"},{"assertionResults":[{"ancestorTitles":["capturing a linked source as a new immutable version"],"fullName":"capturing a linked source as a new immutable version LNK-004-B: capture publishes the current source bytes as a new version and an in-sync capture replays the current one","status":"passed","title":"LNK-004-B: capture publishes the current source bytes as a new version and an in-sync capture replays the current one","duration":172.37124999999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["capturing a linked source as a new immutable version"],"fullName":"capturing a linked source as a new immutable version LNK-004-F: a stale expected current version returns the publish conflict with the actual current version and no version is written","status":"passed","title":"LNK-004-F: a stale expected current version returns the publish conflict with the actual current version and no version is written","duration":204.50437499999998,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451691743,"endTime":1788451692120.5044,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/lnk-004-source-capture.test.ts"},{"assertionResults":[{"ancestorTitles":["relinking one binding at a moved source file"],"fullName":"relinking one binding at a moved source file LNK-005-B: a moved file relinks under its expected hash and keeps the artifact, versions, and comment threads","status":"passed","title":"LNK-005-B: a moved file relinks under its expected hash and keeps the artifact, versions, and comment threads","duration":173.04191599999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["relinking one binding at a moved source file"],"fullName":"relinking one binding at a moved source file LNK-005-F: a mismatched hash, a path outside every root, and a path inside the data directory all change nothing","status":"passed","title":"LNK-005-F: a mismatched hash, a path outside every root, and a path inside the data directory all change nothing","duration":99.86870799999997,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451695554,"endTime":1788451695826.8687,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/lnk-005-relink-moved-source.test.ts"},{"assertionResults":[{"ancestorTitles":["linked source paths are canonicalized, root-checked, and self-protected"],"fullName":"linked source paths are canonicalized, root-checked, and self-protected LNK-006-B: an admitted member links inside a root over loopback and reads the path only through authenticated metadata","status":"passed","title":"LNK-006-B: an admitted member links inside a root over loopback and reads the path only through authenticated metadata","duration":219.06350000000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source paths are canonicalized, root-checked, and self-protected"],"fullName":"linked source paths are canonicalized, root-checked, and self-protected LNK-006-F: every escape, protected target, unauthorized caller, and non-loopback origin is refused without disclosing a path","status":"passed","title":"LNK-006-F: every escape, protected target, unauthorized caller, and non-loopback origin is refused without disclosing a path","duration":137.289083,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451692625,"endTime":1788451692981.289,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/lnk-006-path-safety.test.ts"},{"assertionResults":[{"ancestorTitles":["the live view reaches only authenticated local members"],"fullName":"the live view reaches only authenticated local members LNK-007-B: a local member streams the live bytes no-store while captured versions stay immutably cached","status":"passed","title":"LNK-007-B: a local member streams the live bytes no-store while captured versions stay immutably cached","duration":135.99862499999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["the live view reaches only authenticated local members"],"fullName":"the live view reaches only authenticated local members LNK-007-F: anonymous, cross-origin, public-link, and non-member readers never receive a live byte, and a missing source degrades to the capture","status":"passed","title":"LNK-007-F: anonymous, cross-origin, public-link, and non-member readers never receive a live byte, and a missing source degrades to the capture","duration":88.89300000000003,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451694858,"endTime":1788451695082.893,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/lnk-007-live-view-audience.test.ts"},{"assertionResults":[{"ancestorTitles":["comment threads on a linked artifact anchor to captured versions"],"fullName":"comment threads on a linked artifact anchor to captured versions LNK-008-B: an in-sync thread anchors to the current version and a drifted one implicitly captures for the commenting principal","status":"passed","title":"LNK-008-B: an in-sync thread anchors to the current version and a drifted one implicitly captures for the commenting principal","duration":306.107292,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["comment threads on a linked artifact anchor to captured versions"],"fullName":"comment threads on a linked artifact anchor to captured versions LNK-008-F: an aborted implicit capture fails the whole comment request and leaves no thread and no version","status":"passed","title":"LNK-008-F: an aborted implicit capture fails the whole comment request and leaves no thread and no version","duration":511.7683750000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451695983,"endTime":1788451696800.7683,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/lnk-008-comment-implicit-capture.test.ts"},{"assertionResults":[{"ancestorTitles":["modern MCP HTTP"],"fullName":"modern MCP HTTP MCP-001-B MCP-001-F MCP-002-B MCP-002-F MCP-003-B MCP-003-F MCP-004-B MCP-004-F MCP-005-B MCP-005-F: modern discovery is authenticated, stateless, and exact","status":"passed","title":"MCP-001-B MCP-001-F MCP-002-B MCP-002-F MCP-003-B MCP-003-F MCP-004-B MCP-004-F MCP-005-B MCP-005-F: modern discovery is authenticated, stateless, and exact","duration":670.802041,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["modern MCP HTTP"],"fullName":"modern MCP HTTP MCP-006-B MCP-006-F MCP-007-B MCP-007-F MCP-008-B MCP-008-F MCP-015-B MCP-015-F PUB-013-B PUB-013-F: every advertised artifact operation runs over real files and shared policy","status":"passed","title":"MCP-006-B MCP-006-F MCP-007-B MCP-007-F MCP-008-B MCP-008-F MCP-015-B MCP-015-F PUB-013-B PUB-013-F: every advertised artifact operation runs over real files and shared policy","duration":301.3531250000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["modern MCP HTTP"],"fullName":"modern MCP HTTP MCP manages projects and refuses ambiguous artifact scope","status":"passed","title":"MCP manages projects and refuses ambiguous artifact scope","duration":78.16583400000013,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["modern MCP HTTP"],"fullName":"modern MCP HTTP external credentials use the same installation and capability policy as HTTP","status":"passed","title":"external credentials use the same installation and capability policy as HTTP","duration":57.59024999999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["modern MCP HTTP"],"fullName":"modern MCP HTTP the linked-file tools answer the stable coded error while the capability is off","status":"passed","title":"the linked-file tools answer the stable coded error while the capability is off","duration":43.247249999999894,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["modern MCP HTTP"],"fullName":"modern MCP HTTP the linked-file tools link, capture, and relink one file on the server machine","status":"passed","title":"the linked-file tools link, capture, and relink one file on the server machine","duration":175.46974999999998,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451688695,"endTime":1788451690022.4697,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/mcp-modern-http.test.ts"},{"assertionResults":[{"ancestorTitles":["queued-work nudges on MCP tool results"],"fullName":"queued-work nudges on MCP tool results NDG-001-B: a principal with queued mailbox dispatches sees exactly one queued-work nudge on an unrelated tool result, the nudge names the real count and steps down to the unfinished claim and the settling echo as the queue drains, and it disappears once nothing is pending","status":"passed","title":"NDG-001-B: a principal with queued mailbox dispatches sees exactly one queued-work nudge on an unrelated tool result, the nudge names the real count and steps down to the unfinished claim and the settling echo as the queue drains, and it disappears once nothing is pending","duration":441.213542,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["queued-work nudges on MCP tool results"],"fullName":"queued-work nudges on MCP tool results NDG-001-F: with work queued, an error result and a dispatch_inbox result each carry no nudge","status":"passed","title":"NDG-001-F: with work queued, an error result and a dispatch_inbox result each carry no nudge","duration":142.930292,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451691790,"endTime":1788451692373.9302,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/ndg-001-queued-work-nudge.test.ts"},{"assertionResults":[{"ancestorTitles":["nudge isolation on MCP tool results"],"fullName":"nudge isolation on MCP tool results NDG-002-B: structuredContent and the existing content items are byte-identical with and without a pending nudge, and the nudge is one bounded trailing item that quotes no untrusted text","status":"passed","title":"NDG-002-B: structuredContent and the existing content items are byte-identical with and without a pending nudge, and the nudge is one bounded trailing item that quotes no untrusted text","duration":390.490833,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["nudge isolation on MCP tool results"],"fullName":"nudge isolation on MCP tool results NDG-002-F: a second principal calling the same tools sees none of the first principal's counts, with or without a mailbox agent of its own","status":"passed","title":"NDG-002-F: a second principal calling the same tools sees none of the first principal's counts, with or without a mailbox agent of its own","duration":406.0120830000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451693707,"endTime":1788451694504.012,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/ndg-002-nudge-isolation.test.ts"},{"assertionResults":[{"ancestorTitles":["private content sessions"],"fullName":"private content sessions AUTH-014-B AUTH-015-B: one bootstrap opens one private immutable site through a host-only session","status":"passed","title":"AUTH-014-B AUTH-015-B: one bootstrap opens one private immutable site through a host-only session","duration":427.59495799999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["private content sessions"],"fullName":"private content sessions AUTH-015-F: content sessions cannot cross version hosts or authorize writes","status":"passed","title":"AUTH-015-F: content sessions cannot cross version hosts or authorize writes","duration":329.924083,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["private content sessions"],"fullName":"private content sessions CMT-018-B CMT-018-F: an authenticated exact-version preview lease is read-only, restart-safe, and version-bound","status":"passed","title":"CMT-018-B CMT-018-F: an authenticated exact-version preview lease is read-only, restart-safe, and version-bound","duration":217.2048339999999,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451697712,"endTime":1788451698687.2048,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/private-content-session.test.ts"},{"assertionResults":[{"ancestorTitles":["project-scoped artifacts"],"fullName":"project-scoped artifacts default use stays simple while project boundaries stay isolated","status":"passed","title":"default use stays simple while project boundaries stay isolated","duration":360.50920799999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["project-scoped artifacts"],"fullName":"project-scoped artifacts archive blocks writes but preserves exact history","status":"passed","title":"archive blocks writes but preserves exact history","duration":238.986666,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451698770,"endTime":1788451699368.9866,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/project-scoped-artifacts.test.ts"},{"assertionResults":[{"ancestorTitles":["derived agent activity"],"fullName":"derived agent activity PRS-001-B: a fresh agent reads idle, a claimed bundle reads working with its dispatch id, and full resolution returns it to idle with the dispatch addressed","status":"passed","title":"PRS-001-B: a fresh agent reads idle, a claimed bundle reads working with its dispatch id, and full resolution returns it to idle with the dispatch addressed","duration":245.78216699999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["derived agent activity"],"fullName":"derived agent activity PRS-001-F: a stale heartbeat reads disconnected while the agent still holds a claim, and repeated reads write no activity","status":"passed","title":"PRS-001-F: a stale heartbeat reads disconnected while the agent still holds a claim, and repeated reads write no activity","duration":140.35779200000002,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451695084,"endTime":1788451695470.358,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/prs-001-derived-activity.test.ts"},{"assertionResults":[{"ancestorTitles":["agent activity beacon"],"fullName":"agent activity beacon PRS-002-B: a fresh beacon reports working with its finer state, decays to the derived state after the 60 s TTL, and an idle beacon clears it at once","status":"passed","title":"PRS-002-B: a fresh beacon reports working with its finer state, decays to the derived state after the 60 s TTL, and an idle beacon clears it at once","duration":204.92729200000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["agent activity beacon"],"fullName":"agent activity beacon PRS-002-F: a beacon from an agent whose heartbeat is stale is accepted with 204 but never surfaces in the listing","status":"passed","title":"PRS-002-F: a beacon from an agent whose heartbeat is stale is accepted with 204 but never surfaces in the listing","duration":41.92087499999991,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699218,"endTime":1788451699464.921,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/prs-002-activity-beacon.test.ts"},{"assertionResults":[{"ancestorTitles":["activity beacon authority"],"fullName":"activity beacon authority PRS-003-B: an agent principal beacons its own agent and the finer state surfaces","status":"passed","title":"PRS-003-B: an agent principal beacons its own agent and the finer state surfaces","duration":212.52929200000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["activity beacon authority"],"fullName":"activity beacon authority PRS-003-F: another principal's beacon answers the same 404 as a missing agent and records nothing, and a direct human is refused outright","status":"passed","title":"PRS-003-F: another principal's beacon answers the same 404 as a missing agent and records nothing, and a direct human is refused outright","duration":51.741833999999926,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699223,"endTime":1788451699486.742,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/prs-003-beacon-authority.test.ts"},{"assertionResults":[{"ancestorTitles":["bulk comment clearing"],"fullName":"bulk comment clearing PRS-005-B: clearing resolved deletes exactly the resolved threads with one ledger action each, and a manage-any key clears all","status":"passed","title":"PRS-005-B: clearing resolved deletes exactly the resolved threads with one ledger action each, and a manage-any key clears all","duration":385.18066699999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["bulk comment clearing"],"fullName":"bulk comment clearing PRS-005-F: an actively dispatched thread is skipped and counted, a non-member key is refused, and MCP comment_clear answers the same shape","status":"passed","title":"PRS-005-F: an actively dispatched thread is skipped and counted, a non-member key is refused, and MCP comment_clear answers the same shape","duration":322.628291,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451697544,"endTime":1788451698251.6282,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/prs-005-bulk-clear.test.ts"},{"assertionResults":[{"ancestorTitles":["registered agent kind widening"],"fullName":"registered agent kind widening PRS-007-B: any valid kind slug registers, round-trips through the listing, and the response carries protocol version 1","status":"passed","title":"PRS-007-B: any valid kind slug registers, round-trips through the listing, and the response carries protocol version 1","duration":196.91983300000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["registered agent kind widening"],"fullName":"registered agent kind widening PRS-007-F: a kind that is not a slug is refused with 422 and registers nothing","status":"passed","title":"PRS-007-F: a kind that is not a slug is refused with 422 and registers nothing","duration":90.29787499999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["registered agent kind widening"],"fullName":"registered agent kind widening PRS-007: declared capabilities normalize to known keys, unknown keys are ignored, and an absent declaration defaults to the native tier","status":"passed","title":"PRS-007: declared capabilities normalize to known keys, unknown keys are ignored, and an absent declaration defaults to the native tier","duration":59.13554199999999,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451695220,"endTime":1788451695566.1355,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/prs-007-agent-kind-slug.test.ts"},{"assertionResults":[{"ancestorTitles":["authenticated media preview delivery"],"fullName":"authenticated media preview delivery PRV-003-B: exact image and ranged video bytes use typed, immutable, media-only responses","status":"passed","title":"PRV-003-B: exact image and ranged video bytes use typed, immutable, media-only responses","duration":227.52441699999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["authenticated media preview delivery"],"fullName":"authenticated media preview delivery PRV-003-F: hostile contexts, unsupported types, and absent paths fail closed","status":"passed","title":"PRV-003-F: hostile contexts, unsupported types, and absent paths fail closed","duration":176.08495800000003,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451692831,"endTime":1788451693234.085,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/prv-003-media-preview-route.test.ts"},{"assertionResults":[{"ancestorTitles":["public-link administration"],"fullName":"public-link administration AUTH-018-B: administrators page across projects and make one public artifact private","status":"passed","title":"AUTH-018-B: administrators page across projects and make one public artifact private","duration":630.272833,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["public-link administration"],"fullName":"public-link administration AUTH-018-F: bulk shutdown rejects invalid requests and preserves partial-failure retry semantics","status":"passed","title":"AUTH-018-F: bulk shutdown rejects invalid requests and preserves partial-failure retry semantics","duration":453.9909170000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451697407,"endTime":1788451698490.991,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/public-link-administration.test.ts"},{"assertionResults":[{"ancestorTitles":["local publishing runtime"],"fullName":"local publishing runtime ART-001-B: versions keep identity while publication links keep their distinct roles","status":"passed","title":"ART-001-B: versions keep identity while publication links keep their distinct roles","duration":406.583625,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local publishing runtime"],"fullName":"local publishing runtime PUB-006-B PUB-006-F: retries return the original result and conflicting reuse fails","status":"passed","title":"PUB-006-B PUB-006-F: retries return the original result and conflicting reuse fails","duration":266.3299169999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local publishing runtime"],"fullName":"local publishing runtime PUB-008-B PUB-008-F: concurrent stale publishes cannot overwrite the winner","status":"passed","title":"PUB-008-B PUB-008-F: concurrent stale publishes cannot overwrite the winner","duration":199.22474999999986,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local publishing runtime"],"fullName":"local publishing runtime PUB-004-B PUB-007-B: an intentional identical publish creates a version but reuses immutable bytes","status":"passed","title":"PUB-004-B PUB-007-B: an intentional identical publish creates a version but reuses immutable bytes","duration":219.42737499999998,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451697431,"endTime":1788451698522.4275,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/publishing-runtime.test.ts"},{"assertionResults":[{"ancestorTitles":["local publishing security boundaries"],"fullName":"local publishing security boundaries MAN-003-B MAN-003-F: portable paths round-trip through URLs and unsafe paths are rejected","status":"passed","title":"MAN-003-B MAN-003-F: portable paths round-trip through URLs and unsafe paths are rejected","duration":149.878917,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local publishing security boundaries"],"fullName":"local publishing security boundaries API publication requires a trusted principal and creates nothing on rejection","status":"passed","title":"API publication requires a trusted principal and creates nothing on rejection","duration":61.84362500000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local publishing security boundaries"],"fullName":"local publishing security boundaries AUTH-002-B: account-required is the default and an admitted principal can open it","status":"passed","title":"AUTH-002-B: account-required is the default and an admitted principal can open it","duration":53.73625000000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local publishing security boundaries"],"fullName":"local publishing security boundaries PUB-002-F SCP-007-F: public APIs reject raw contents, paths, and source URLs","status":"passed","title":"PUB-002-F SCP-007-F: public APIs reject raw contents, paths, and source URLs","duration":24.881916000000047,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local publishing security boundaries"],"fullName":"local publishing security boundaries foundation: malformed and oversized file-upload plans fail without destabilizing the server","status":"passed","title":"foundation: malformed and oversized file-upload plans fail without destabilizing the server","duration":538.820875,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local publishing security boundaries"],"fullName":"local publishing security boundaries foundation: the local server binds only to IPv4 loopback","status":"passed","title":"foundation: the local server binds only to IPv4 loopback","duration":15.610292000000072,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local publishing security boundaries"],"fullName":"local publishing security boundaries AUTH-002-F: account-required bytes do not open through stable or exact links","status":"passed","title":"AUTH-002-F: account-required bytes do not open through stable or exact links","duration":47.57033299999989,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local publishing security boundaries"],"fullName":"local publishing security boundaries foundation: public content is retained at the edge but authorization is revalidated","status":"passed","title":"foundation: public content is retained at the edge but authorization is revalidated","duration":77.16612500000019,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451689411,"endTime":1788451690381.166,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/publishing-security.test.ts"},{"assertionResults":[{"ancestorTitles":["staged upload lifecycle"],"fullName":"staged upload lifecycle PUB-001-F: another principal or installation cannot use a staged upload","status":"passed","title":"PUB-001-F: another principal or installation cannot use a staged upload","duration":280.23383300000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["staged upload lifecycle"],"fullName":"staged upload lifecycle expiry closes only uncommitted staging while committed retries remain stable","status":"passed","title":"expiry closes only uncommitted staging while committed retries remain stable","duration":345.6279169999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["staged upload lifecycle"],"fullName":"staged upload lifecycle PUB-009-B OPS-006-F: cleanup is bounded, waits for settle, tolerates concurrent passes, and preserves committed work","status":"passed","title":"PUB-009-B OPS-006-F: cleanup is bounded, waits for settle, tolerates concurrent passes, and preserves committed work","duration":123.30612500000007,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["staged upload lifecycle"],"fullName":"staged upload lifecycle foundation: an interrupted local write cannot reappear after cleanup","status":"passed","title":"foundation: an interrupted local write cannot reappear after cleanup","duration":45.909834000000046,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451696148,"endTime":1788451696943.91,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/staged-upload-lifecycle.test.ts"},{"assertionResults":[{"ancestorTitles":["local storage migration"],"fullName":"local storage migration foundation: an early local database upgrades without losing publication","status":"passed","title":"foundation: an early local database upgrades without losing publication","duration":329.12012500000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local storage migration"],"fullName":"local storage migration a populated pre-project database migrates once without changing identity or bytes","status":"passed","title":"a populated pre-project database migrates once without changing identity or bytes","duration":272.6260410000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["local storage migration"],"fullName":"local storage migration foundation: the previous management schema upgrades to durable tag and deletion idempotency","status":"passed","title":"foundation: the previous management schema upgrades to durable tag and deletion idempotency","duration":267.90658400000007,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451696060,"endTime":1788451696929.9065,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/storage-migration.test.ts"},{"assertionResults":[{"ancestorTitles":["hosted WorkOS MCP authorization"],"fullName":"hosted WorkOS MCP authorization hosted startup accepts only exact refreshable S256 authorization metadata","status":"passed","title":"hosted startup accepts only exact refreshable S256 authorization metadata","duration":269.500125,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["hosted WorkOS MCP authorization"],"fullName":"hosted WorkOS MCP authorization foundation: discovery, JWT verification, first-use identity binding, and API-key fallback share one live HTTP boundary","status":"passed","title":"foundation: discovery, JWT verification, first-use identity binding, and API-key fallback share one live HTTP boundary","duration":437.1162499999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["hosted WorkOS MCP authorization"],"fullName":"hosted WorkOS MCP authorization foundation: wrong token contracts fail closed and provider outages stay distinct","status":"passed","title":"foundation: wrong token contracts fail closed and provider outages stay distinct","duration":182.55091700000003,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451693804,"endTime":1788451694693.551,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/conformance/workos-mcp-authorization.test.ts"},{"assertionResults":[{"ancestorTitles":["linked source engine","canonicalization"],"fullName":"linked source engine canonicalization a relative path is rejected before any filesystem access","status":"passed","title":"a relative path is rejected before any filesystem access","duration":23.80983299999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source engine","canonicalization"],"fullName":"linked source engine canonicalization a missing target, a directory, and a dangling symlink are rejected","status":"passed","title":"a missing target, a directory, and a dangling symlink are rejected","duration":12.80400000000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source engine","canonicalization"],"fullName":"linked source engine canonicalization a symlink resolves to its target so containment is checked on the real file","status":"passed","title":"a symlink resolves to its target so containment is checked on the real file","duration":8.65466699999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source engine","canonicalization"],"fullName":"linked source engine canonicalization error messages never include the presented path","status":"passed","title":"error messages never include the presented path","duration":12.441874999999982,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source engine","link roots"],"fullName":"linked source engine link roots dot-dot traversal cannot escape a root because paths canonicalize first","status":"passed","title":"dot-dot traversal cannot escape a root because paths canonicalize first","duration":6.741124999999954,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source engine","link roots"],"fullName":"linked source engine link roots a file inside any configured root passes","status":"passed","title":"a file inside any configured root passes","duration":4.381582999999978,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source engine","link roots"],"fullName":"linked source engine link roots a misconfigured root fails loudly instead of changing the boundary","status":"passed","title":"a misconfigured root fails loudly instead of changing the boundary","duration":5.588666999999987,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source engine","self-protection"],"fullName":"linked source engine self-protection the data directory, its children, and the database companions are always rejected","status":"passed","title":"the data directory, its children, and the database companions are always rejected","duration":15.752499999999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source engine","self-protection"],"fullName":"linked source engine self-protection a database that lives outside the data directory is still protected","status":"passed","title":"a database that lives outside the data directory is still protected","duration":17.105458,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source engine","self-protection"],"fullName":"linked source engine self-protection an ordinary file outside the protected locations passes","status":"passed","title":"an ordinary file outside the protected locations passes","duration":13.702375000000018,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source engine","freshness"],"fullName":"linked source engine freshness an untouched file is in-sync and a rewritten file is modified","status":"passed","title":"an untouched file is in-sync and a rewritten file is modified","duration":24.986999999999966,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source engine","freshness"],"fullName":"linked source engine freshness a deleted file is missing and a permission-denied file is unreadable","status":"passed","title":"a deleted file is missing and a permission-denied file is unreadable","duration":44.67183399999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source engine","freshness"],"fullName":"linked source engine freshness a regular file replaced by a symlink is unreadable, never followed","status":"passed","title":"a regular file replaced by a symlink is unreadable, never followed","duration":20.169791999999973,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source engine","verified open"],"fullName":"linked source engine verified open stat and bytes come from the same descriptor even when the path is swapped","status":"passed","title":"stat and bytes come from the same descriptor even when the path is swapped","duration":18.19479199999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source engine","verified open"],"fullName":"linked source engine verified open a symlink at the final path is refused by O_NOFOLLOW","status":"passed","title":"a symlink at the final path is refused by O_NOFOLLOW","duration":4.304124999999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source engine","verified open"],"fullName":"linked source engine verified open an expected-fingerprint mismatch aborts with the retryable drift error","status":"passed","title":"an expected-fingerprint mismatch aborts with the retryable drift error","duration":8.217291999999986,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source engine","verified open"],"fullName":"linked source engine verified open a missing file surfaces as missing","status":"passed","title":"a missing file surfaces as missing","duration":3.6550000000000296,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source engine","capture"],"fullName":"linked source engine capture capture hashes and spools exactly the bytes of one descriptor pass","status":"passed","title":"capture hashes and spools exactly the bytes of one descriptor pass","duration":41.435167000000035,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source engine","capture"],"fullName":"linked source engine capture a modification during the read aborts the capture and removes the spool","status":"passed","title":"a modification during the read aborts the capture and removes the spool","duration":19.796957999999904,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["linked source engine","capture"],"fullName":"linked source engine capture a capture of a path swapped to a symlink is refused","status":"passed","title":"a capture of a path swapped to a symlink is refused","duration":19.324833000000012,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451698725,"endTime":1788451699051.325,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/local/linked-source-engine.test.ts"},{"assertionResults":[{"ancestorTitles":["bounded local runtime smoke"],"fullName":"bounded local runtime smoke publishes, reads concurrently, restarts, and stays within gross safety limits","status":"passed","title":"publishes, reads concurrently, restarts, and stays within gross safety limits","duration":1159.096375,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["bounded local runtime smoke"],"fullName":"bounded local runtime smoke rejects a workload whose aggregate bytes would become a stress test","status":"passed","title":"rejects a workload whose aggregate bytes would become a stress test","duration":1.0294999999998709,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451692032,"endTime":1788451693193.0295,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/smoke/local-performance-smoke.test.ts"},{"assertionResults":[{"ancestorTitles":["native cloud object integrity helpers"],"fullName":"native cloud object integrity helpers an opened provider object must include the promised byte body","status":"passed","title":"an opened provider object must include the promised byte body","duration":1.0306659999999965,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["native cloud object integrity helpers"],"fullName":"native cloud object integrity helpers a completed provider upload must report the exact accepted size","status":"passed","title":"a completed provider upload must report the exact accepted size","duration":0.11983399999999733,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699720,"endTime":1788451699721.1199,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/storage/cloud-object-storage.test.ts"},{"assertionResults":[{"ancestorTitles":["sqlite source bindings"],"fullName":"sqlite source bindings a link commit persists the first version and its source binding","status":"passed","title":"a link commit persists the first version and its source binding","duration":57.014917,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["sqlite source bindings"],"fullName":"sqlite source bindings a link commit replays under its original idempotency key","status":"passed","title":"a link commit replays under its original idempotency key","duration":15.827916000000016,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["sqlite source bindings"],"fullName":"sqlite source bindings recording freshness changes only the observed state","status":"passed","title":"recording freshness changes only the observed state","duration":16.55291699999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["sqlite source bindings"],"fullName":"sqlite source bindings a captured version lands as an ordinary version row","status":"passed","title":"a captured version lands as an ordinary version row","duration":24.220500000000015,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["sqlite source bindings"],"fullName":"sqlite source bindings a relink keeps the artifact identity and every saved version","status":"passed","title":"a relink keeps the artifact identity and every saved version","duration":19.124124999999992,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["sqlite source bindings"],"fullName":"sqlite source bindings a replayed relink appends no second action record","status":"passed","title":"a replayed relink appends no second action record","duration":37.46424999999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["sqlite source bindings"],"fullName":"sqlite source bindings binding operations reject an artifact without a binding","status":"passed","title":"binding operations reject an artifact without a binding","duration":18.569334000000026,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["sqlite source bindings"],"fullName":"sqlite source bindings an ordinary publication leaves every binding column null","status":"passed","title":"an ordinary publication leaves every binding column null","duration":15.28004199999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["sqlite source bindings"],"fullName":"sqlite source bindings the stored schema rejects a partial or unknown binding state","status":"passed","title":"the stored schema rejects a partial or unknown binding state","duration":18.47637500000002,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451690617,"endTime":1788451690839.4763,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/storage/sqlite-source-binding.test.ts"},{"assertionResults":[{"ancestorTitles":["anti-slop Oxlint plugin"],"fullName":"anti-slop Oxlint plugin every configured rule rejects its representative unsafe pattern","status":"passed","title":"every configured rule rejects its representative unsafe pattern","duration":193.202958,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["anti-slop Oxlint plugin"],"fullName":"anti-slop Oxlint plugin the plugin accepts precise types, direct calls, parsing, and justified assertions","status":"passed","title":"the plugin accepts precise types, direct calls, parsing, and justified assertions","duration":143.339334,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451698115,"endTime":1788451698452.3394,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/tooling/anti-slop-plugin.test.ts"},{"assertionResults":[{"ancestorTitles":["object-storage provider boundary"],"fullName":"object-storage provider boundary DEP-022-F: provider SDK imports stay inside their adapters","status":"passed","title":"DEP-022-F: provider SDK imports stay inside their adapters","duration":38.48670799999999,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1788451699330,"endTime":1788451699368.4868,"status":"passed","message":"","name":"/Users/ramos/oss/artifact-server/tests/tooling/object-storage-boundary.test.ts"}]}