rekall-accord 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next-node/BUILD_ID +1 -0
- package/.next-node/app-path-routes-manifest.json +26 -0
- package/.next-node/build-manifest.json +24 -0
- package/.next-node/package.json +1 -0
- package/.next-node/prerender-manifest.json +333 -0
- package/.next-node/required-server-files.json +358 -0
- package/.next-node/routes-manifest.json +194 -0
- package/.next-node/server/app/_global-error/page/app-paths-manifest.json +3 -0
- package/.next-node/server/app/_global-error/page/build-manifest.json +20 -0
- package/.next-node/server/app/_global-error/page/next-font-manifest.json +6 -0
- package/.next-node/server/app/_global-error/page/react-loadable-manifest.json +1 -0
- package/.next-node/server/app/_global-error/page/server-reference-manifest.json +4 -0
- package/.next-node/server/app/_global-error/page.js +9 -0
- package/.next-node/server/app/_global-error/page.js.map +5 -0
- package/.next-node/server/app/_global-error/page.js.nft.json +1 -0
- package/.next-node/server/app/_global-error/page_client-reference-manifest.js +3 -0
- package/.next-node/server/app/_global-error.html +1 -0
- package/.next-node/server/app/_global-error.meta +22 -0
- package/.next-node/server/app/_global-error.rsc +14 -0
- package/.next-node/server/app/_global-error.segments/__PAGE__.segment.rsc +19 -0
- package/.next-node/server/app/_global-error.segments/_full.segment.rsc +14 -0
- package/.next-node/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/.next-node/server/app/_not-found/page/app-paths-manifest.json +3 -0
- package/.next-node/server/app/_not-found/page/build-manifest.json +20 -0
- package/.next-node/server/app/_not-found/page/next-font-manifest.json +6 -0
- package/.next-node/server/app/_not-found/page/react-loadable-manifest.json +1 -0
- package/.next-node/server/app/_not-found/page/server-reference-manifest.json +4 -0
- package/.next-node/server/app/_not-found/page.js +12 -0
- package/.next-node/server/app/_not-found/page.js.map +5 -0
- package/.next-node/server/app/_not-found/page.js.nft.json +1 -0
- package/.next-node/server/app/_not-found/page_client-reference-manifest.js +3 -0
- package/.next-node/server/app/_not-found.html +1 -0
- package/.next-node/server/app/_not-found.meta +27 -0
- package/.next-node/server/app/_not-found.rsc +16 -0
- package/.next-node/server/app/_not-found.segments/_full.segment.rsc +16 -0
- package/.next-node/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +22 -0
- package/.next-node/server/app/_not-found.segments/_tree.segment.rsc +2 -0
- package/.next-node/server/app/about/page/app-paths-manifest.json +3 -0
- package/.next-node/server/app/about/page/build-manifest.json +20 -0
- package/.next-node/server/app/about/page/next-font-manifest.json +6 -0
- package/.next-node/server/app/about/page/react-loadable-manifest.json +1 -0
- package/.next-node/server/app/about/page/server-reference-manifest.json +4 -0
- package/.next-node/server/app/about/page.js +13 -0
- package/.next-node/server/app/about/page.js.map +5 -0
- package/.next-node/server/app/about/page.js.nft.json +1 -0
- package/.next-node/server/app/about/page_client-reference-manifest.js +3 -0
- package/.next-node/server/app/about.html +1 -0
- package/.next-node/server/app/about.meta +26 -0
- package/.next-node/server/app/about.rsc +28 -0
- package/.next-node/server/app/about.segments/_full.segment.rsc +28 -0
- package/.next-node/server/app/about.segments/_tree.segment.rsc +2 -0
- package/.next-node/server/app/about.segments/about/__PAGE__.segment.rsc +33 -0
- package/.next-node/server/app/api/account/route/app-paths-manifest.json +3 -0
- package/.next-node/server/app/api/account/route/build-manifest.json +12 -0
- package/.next-node/server/app/api/account/route/server-reference-manifest.json +4 -0
- package/.next-node/server/app/api/account/route.js +9 -0
- package/.next-node/server/app/api/account/route.js.map +5 -0
- package/.next-node/server/app/api/account/route.js.nft.json +1 -0
- package/.next-node/server/app/api/account/route_client-reference-manifest.js +3 -0
- package/.next-node/server/app/api/agent-token/route/app-paths-manifest.json +3 -0
- package/.next-node/server/app/api/agent-token/route/build-manifest.json +12 -0
- package/.next-node/server/app/api/agent-token/route/server-reference-manifest.json +4 -0
- package/.next-node/server/app/api/agent-token/route.js +7 -0
- package/.next-node/server/app/api/agent-token/route.js.map +5 -0
- package/.next-node/server/app/api/agent-token/route.js.nft.json +1 -0
- package/.next-node/server/app/api/agent-token/route_client-reference-manifest.js +3 -0
- package/.next-node/server/app/api/audit/route/app-paths-manifest.json +3 -0
- package/.next-node/server/app/api/audit/route/build-manifest.json +12 -0
- package/.next-node/server/app/api/audit/route/server-reference-manifest.json +4 -0
- package/.next-node/server/app/api/audit/route.js +7 -0
- package/.next-node/server/app/api/audit/route.js.map +5 -0
- package/.next-node/server/app/api/audit/route.js.nft.json +1 -0
- package/.next-node/server/app/api/audit/route_client-reference-manifest.js +3 -0
- package/.next-node/server/app/api/changes/route/app-paths-manifest.json +3 -0
- package/.next-node/server/app/api/changes/route/build-manifest.json +12 -0
- package/.next-node/server/app/api/changes/route/server-reference-manifest.json +4 -0
- package/.next-node/server/app/api/changes/route.js +7 -0
- package/.next-node/server/app/api/changes/route.js.map +5 -0
- package/.next-node/server/app/api/changes/route.js.nft.json +1 -0
- package/.next-node/server/app/api/changes/route_client-reference-manifest.js +3 -0
- package/.next-node/server/app/api/licence/route/app-paths-manifest.json +3 -0
- package/.next-node/server/app/api/licence/route/build-manifest.json +12 -0
- package/.next-node/server/app/api/licence/route/server-reference-manifest.json +4 -0
- package/.next-node/server/app/api/licence/route.js +7 -0
- package/.next-node/server/app/api/licence/route.js.map +5 -0
- package/.next-node/server/app/api/licence/route.js.nft.json +1 -0
- package/.next-node/server/app/api/licence/route_client-reference-manifest.js +3 -0
- package/.next-node/server/app/api/local/route/app-paths-manifest.json +3 -0
- package/.next-node/server/app/api/local/route/build-manifest.json +12 -0
- package/.next-node/server/app/api/local/route/server-reference-manifest.json +4 -0
- package/.next-node/server/app/api/local/route.js +9 -0
- package/.next-node/server/app/api/local/route.js.map +5 -0
- package/.next-node/server/app/api/local/route.js.nft.json +1 -0
- package/.next-node/server/app/api/local/route_client-reference-manifest.js +3 -0
- package/.next-node/server/app/api/mcp/route/app-paths-manifest.json +3 -0
- package/.next-node/server/app/api/mcp/route/build-manifest.json +12 -0
- package/.next-node/server/app/api/mcp/route/server-reference-manifest.json +4 -0
- package/.next-node/server/app/api/mcp/route.js +9 -0
- package/.next-node/server/app/api/mcp/route.js.map +5 -0
- package/.next-node/server/app/api/mcp/route.js.nft.json +1 -0
- package/.next-node/server/app/api/mcp/route_client-reference-manifest.js +3 -0
- package/.next-node/server/app/api/org/route/app-paths-manifest.json +3 -0
- package/.next-node/server/app/api/org/route/build-manifest.json +12 -0
- package/.next-node/server/app/api/org/route/server-reference-manifest.json +4 -0
- package/.next-node/server/app/api/org/route.js +8 -0
- package/.next-node/server/app/api/org/route.js.map +5 -0
- package/.next-node/server/app/api/org/route.js.nft.json +1 -0
- package/.next-node/server/app/api/org/route_client-reference-manifest.js +3 -0
- package/.next-node/server/app/api/project-logo/route/app-paths-manifest.json +3 -0
- package/.next-node/server/app/api/project-logo/route/build-manifest.json +12 -0
- package/.next-node/server/app/api/project-logo/route/server-reference-manifest.json +4 -0
- package/.next-node/server/app/api/project-logo/route.js +7 -0
- package/.next-node/server/app/api/project-logo/route.js.map +5 -0
- package/.next-node/server/app/api/project-logo/route.js.nft.json +1 -0
- package/.next-node/server/app/api/project-logo/route_client-reference-manifest.js +3 -0
- package/.next-node/server/app/api/runner/route/app-paths-manifest.json +3 -0
- package/.next-node/server/app/api/runner/route/build-manifest.json +12 -0
- package/.next-node/server/app/api/runner/route/server-reference-manifest.json +4 -0
- package/.next-node/server/app/api/runner/route.js +8 -0
- package/.next-node/server/app/api/runner/route.js.map +5 -0
- package/.next-node/server/app/api/runner/route.js.nft.json +1 -0
- package/.next-node/server/app/api/runner/route_client-reference-manifest.js +3 -0
- package/.next-node/server/app/api/runs/route/app-paths-manifest.json +3 -0
- package/.next-node/server/app/api/runs/route/build-manifest.json +12 -0
- package/.next-node/server/app/api/runs/route/server-reference-manifest.json +4 -0
- package/.next-node/server/app/api/runs/route.js +9 -0
- package/.next-node/server/app/api/runs/route.js.map +5 -0
- package/.next-node/server/app/api/runs/route.js.nft.json +1 -0
- package/.next-node/server/app/api/runs/route_client-reference-manifest.js +3 -0
- package/.next-node/server/app/api/share/route/app-paths-manifest.json +3 -0
- package/.next-node/server/app/api/share/route/build-manifest.json +12 -0
- package/.next-node/server/app/api/share/route/server-reference-manifest.json +4 -0
- package/.next-node/server/app/api/share/route.js +7 -0
- package/.next-node/server/app/api/share/route.js.map +5 -0
- package/.next-node/server/app/api/share/route.js.nft.json +1 -0
- package/.next-node/server/app/api/share/route_client-reference-manifest.js +3 -0
- package/.next-node/server/app/api/team/route/app-paths-manifest.json +3 -0
- package/.next-node/server/app/api/team/route/build-manifest.json +12 -0
- package/.next-node/server/app/api/team/route/server-reference-manifest.json +4 -0
- package/.next-node/server/app/api/team/route.js +7 -0
- package/.next-node/server/app/api/team/route.js.map +5 -0
- package/.next-node/server/app/api/team/route.js.nft.json +1 -0
- package/.next-node/server/app/api/team/route_client-reference-manifest.js +3 -0
- package/.next-node/server/app/api/workspace/route/app-paths-manifest.json +3 -0
- package/.next-node/server/app/api/workspace/route/build-manifest.json +12 -0
- package/.next-node/server/app/api/workspace/route/server-reference-manifest.json +4 -0
- package/.next-node/server/app/api/workspace/route.js +9 -0
- package/.next-node/server/app/api/workspace/route.js.map +5 -0
- package/.next-node/server/app/api/workspace/route.js.nft.json +1 -0
- package/.next-node/server/app/api/workspace/route_client-reference-manifest.js +3 -0
- package/.next-node/server/app/guides/[slug]/page/app-paths-manifest.json +3 -0
- package/.next-node/server/app/guides/[slug]/page/build-manifest.json +20 -0
- package/.next-node/server/app/guides/[slug]/page/next-font-manifest.json +6 -0
- package/.next-node/server/app/guides/[slug]/page/react-loadable-manifest.json +1 -0
- package/.next-node/server/app/guides/[slug]/page/server-reference-manifest.json +4 -0
- package/.next-node/server/app/guides/[slug]/page.js +14 -0
- package/.next-node/server/app/guides/[slug]/page.js.map +5 -0
- package/.next-node/server/app/guides/[slug]/page.js.nft.json +1 -0
- package/.next-node/server/app/guides/[slug]/page_client-reference-manifest.js +3 -0
- package/.next-node/server/app/guides/acceptance-criteria-and-qa.html +1 -0
- package/.next-node/server/app/guides/acceptance-criteria-and-qa.meta +31 -0
- package/.next-node/server/app/guides/acceptance-criteria-and-qa.rsc +27 -0
- package/.next-node/server/app/guides/acceptance-criteria-and-qa.segments/_full.segment.rsc +27 -0
- package/.next-node/server/app/guides/acceptance-criteria-and-qa.segments/_tree.segment.rsc +2 -0
- package/.next-node/server/app/guides/acceptance-criteria-and-qa.segments/guides/$d$slug/__PAGE__.segment.rsc +39 -0
- package/.next-node/server/app/guides/ai-development-change-requests.html +1 -0
- package/.next-node/server/app/guides/ai-development-change-requests.meta +31 -0
- package/.next-node/server/app/guides/ai-development-change-requests.rsc +25 -0
- package/.next-node/server/app/guides/ai-development-change-requests.segments/_full.segment.rsc +25 -0
- package/.next-node/server/app/guides/ai-development-change-requests.segments/_tree.segment.rsc +2 -0
- package/.next-node/server/app/guides/ai-development-change-requests.segments/guides/$d$slug/__PAGE__.segment.rsc +37 -0
- package/.next-node/server/app/guides/page/app-paths-manifest.json +3 -0
- package/.next-node/server/app/guides/page/build-manifest.json +20 -0
- package/.next-node/server/app/guides/page/next-font-manifest.json +6 -0
- package/.next-node/server/app/guides/page/react-loadable-manifest.json +1 -0
- package/.next-node/server/app/guides/page/server-reference-manifest.json +4 -0
- package/.next-node/server/app/guides/page.js +13 -0
- package/.next-node/server/app/guides/page.js.map +5 -0
- package/.next-node/server/app/guides/page.js.nft.json +1 -0
- package/.next-node/server/app/guides/page_client-reference-manifest.js +3 -0
- package/.next-node/server/app/guides/software-requirements-template.html +1 -0
- package/.next-node/server/app/guides/software-requirements-template.meta +31 -0
- package/.next-node/server/app/guides/software-requirements-template.rsc +26 -0
- package/.next-node/server/app/guides/software-requirements-template.segments/_full.segment.rsc +26 -0
- package/.next-node/server/app/guides/software-requirements-template.segments/_tree.segment.rsc +2 -0
- package/.next-node/server/app/guides/software-requirements-template.segments/guides/$d$slug/__PAGE__.segment.rsc +38 -0
- package/.next-node/server/app/guides.html +1 -0
- package/.next-node/server/app/guides.meta +26 -0
- package/.next-node/server/app/guides.rsc +23 -0
- package/.next-node/server/app/guides.segments/_full.segment.rsc +23 -0
- package/.next-node/server/app/guides.segments/_tree.segment.rsc +2 -0
- package/.next-node/server/app/guides.segments/guides/__PAGE__.segment.rsc +28 -0
- package/.next-node/server/app/index.html +1 -0
- package/.next-node/server/app/index.meta +21 -0
- package/.next-node/server/app/index.rsc +15 -0
- package/.next-node/server/app/index.segments/__PAGE__.segment.rsc +20 -0
- package/.next-node/server/app/index.segments/_full.segment.rsc +15 -0
- package/.next-node/server/app/index.segments/_tree.segment.rsc +2 -0
- package/.next-node/server/app/page/app-paths-manifest.json +3 -0
- package/.next-node/server/app/page/build-manifest.json +20 -0
- package/.next-node/server/app/page/next-font-manifest.json +6 -0
- package/.next-node/server/app/page/react-loadable-manifest.json +1 -0
- package/.next-node/server/app/page/server-reference-manifest.json +4 -0
- package/.next-node/server/app/page.js +13 -0
- package/.next-node/server/app/page.js.map +5 -0
- package/.next-node/server/app/page.js.nft.json +1 -0
- package/.next-node/server/app/page_client-reference-manifest.js +3 -0
- package/.next-node/server/app/robots.txt/route/app-paths-manifest.json +3 -0
- package/.next-node/server/app/robots.txt/route/build-manifest.json +12 -0
- package/.next-node/server/app/robots.txt/route/server-reference-manifest.json +4 -0
- package/.next-node/server/app/robots.txt/route.js +6 -0
- package/.next-node/server/app/robots.txt/route.js.map +5 -0
- package/.next-node/server/app/robots.txt/route.js.nft.json +1 -0
- package/.next-node/server/app/robots.txt/route_client-reference-manifest.js +3 -0
- package/.next-node/server/app/robots.txt.body +9 -0
- package/.next-node/server/app/robots.txt.meta +1 -0
- package/.next-node/server/app/s/[token]/page/app-paths-manifest.json +3 -0
- package/.next-node/server/app/s/[token]/page/build-manifest.json +20 -0
- package/.next-node/server/app/s/[token]/page/next-font-manifest.json +6 -0
- package/.next-node/server/app/s/[token]/page/react-loadable-manifest.json +1 -0
- package/.next-node/server/app/s/[token]/page/server-reference-manifest.json +4 -0
- package/.next-node/server/app/s/[token]/page.js +15 -0
- package/.next-node/server/app/s/[token]/page.js.map +5 -0
- package/.next-node/server/app/s/[token]/page.js.nft.json +1 -0
- package/.next-node/server/app/s/[token]/page_client-reference-manifest.js +3 -0
- package/.next-node/server/app/sitemap.xml/route/app-paths-manifest.json +3 -0
- package/.next-node/server/app/sitemap.xml/route/build-manifest.json +12 -0
- package/.next-node/server/app/sitemap.xml/route/server-reference-manifest.json +4 -0
- package/.next-node/server/app/sitemap.xml/route.js +6 -0
- package/.next-node/server/app/sitemap.xml/route.js.map +5 -0
- package/.next-node/server/app/sitemap.xml/route.js.nft.json +1 -0
- package/.next-node/server/app/sitemap.xml/route_client-reference-manifest.js +3 -0
- package/.next-node/server/app/sitemap.xml.body +8 -0
- package/.next-node/server/app/sitemap.xml.meta +1 -0
- package/.next-node/server/app/spec/page/app-paths-manifest.json +3 -0
- package/.next-node/server/app/spec/page/build-manifest.json +20 -0
- package/.next-node/server/app/spec/page/next-font-manifest.json +6 -0
- package/.next-node/server/app/spec/page/react-loadable-manifest.json +1 -0
- package/.next-node/server/app/spec/page/server-reference-manifest.json +4 -0
- package/.next-node/server/app/spec/page.js +15 -0
- package/.next-node/server/app/spec/page.js.map +5 -0
- package/.next-node/server/app/spec/page.js.nft.json +1 -0
- package/.next-node/server/app/spec/page_client-reference-manifest.js +3 -0
- package/.next-node/server/app-paths-manifest.json +26 -0
- package/.next-node/server/chunks/[externals]__1xp13sj._.js +3 -0
- package/.next-node/server/chunks/[root-of-the-server]__03c4113._.js +3 -0
- package/.next-node/server/chunks/[root-of-the-server]__0_98crs._.js +3 -0
- package/.next-node/server/chunks/[root-of-the-server]__0g957e5._.js +3 -0
- package/.next-node/server/chunks/[root-of-the-server]__0uymhsf._.js +70 -0
- package/.next-node/server/chunks/[root-of-the-server]__1-pt4sf._.js +3 -0
- package/.next-node/server/chunks/[root-of-the-server]__1161aa9._.js +3 -0
- package/.next-node/server/chunks/[root-of-the-server]__15bjnu5._.js +5 -0
- package/.next-node/server/chunks/[root-of-the-server]__194807o._.js +3 -0
- package/.next-node/server/chunks/[root-of-the-server]__1_g8brf._.js +15 -0
- package/.next-node/server/chunks/[root-of-the-server]__1cj35zq._.js +15 -0
- package/.next-node/server/chunks/[root-of-the-server]__1ecyjj1._.js +3 -0
- package/.next-node/server/chunks/[root-of-the-server]__1o6a8yh._.js +3 -0
- package/.next-node/server/chunks/[root-of-the-server]__1yk21j_._.js +3 -0
- package/.next-node/server/chunks/[turbopack]_runtime.js +939 -0
- package/.next-node/server/chunks/_09w0rob._.js +3 -0
- package/.next-node/server/chunks/_0c2ik63._.js +3 -0
- package/.next-node/server/chunks/_116ijjc._.js +3 -0
- package/.next-node/server/chunks/_1fp04yw._.js +3 -0
- package/.next-node/server/chunks/_1gn7eh7._.js +3 -0
- package/.next-node/server/chunks/_1yd-p3w._.js +3 -0
- package/.next-node/server/chunks/_1yf4csx._.js +219 -0
- package/.next-node/server/chunks/_next-internal_server_app_api_account_route_actions_194w89l.js +3 -0
- package/.next-node/server/chunks/_next-internal_server_app_api_agent-token_route_actions_08cna7_.js +3 -0
- package/.next-node/server/chunks/_next-internal_server_app_api_audit_route_actions_19mknew.js +3 -0
- package/.next-node/server/chunks/_next-internal_server_app_api_changes_route_actions_0csrjtr.js +3 -0
- package/.next-node/server/chunks/_next-internal_server_app_api_licence_route_actions_0vpn64k.js +3 -0
- package/.next-node/server/chunks/_next-internal_server_app_api_local_route_actions_14zijx1.js +3 -0
- package/.next-node/server/chunks/_next-internal_server_app_api_mcp_route_actions_1thtluk.js +3 -0
- package/.next-node/server/chunks/_next-internal_server_app_api_org_route_actions_1t3xlml.js +3 -0
- package/.next-node/server/chunks/_next-internal_server_app_api_project-logo_route_actions_100vr9l.js +3 -0
- package/.next-node/server/chunks/_next-internal_server_app_api_runner_route_actions_1wqlapv.js +3 -0
- package/.next-node/server/chunks/_next-internal_server_app_api_runs_route_actions_0kh91o2.js +3 -0
- package/.next-node/server/chunks/_next-internal_server_app_api_share_route_actions_0tpl991.js +3 -0
- package/.next-node/server/chunks/_next-internal_server_app_api_team_route_actions_0b1uoww.js +3 -0
- package/.next-node/server/chunks/_next-internal_server_app_api_workspace_route_actions_19-xkal.js +3 -0
- package/.next-node/server/chunks/_next-internal_server_app_robots_txt_route_actions_15vc_89.js +3 -0
- package/.next-node/server/chunks/_next-internal_server_app_sitemap_xml_route_actions_05l5km9.js +3 -0
- package/.next-node/server/chunks/lib_accord_run-server_ts_1b1ff99._.js +3 -0
- package/.next-node/server/chunks/runner_1v-wy_w._.js +23 -0
- package/.next-node/server/chunks/runner_check_mjs_0poxsgb._.js +3 -0
- package/.next-node/server/chunks/runner_config_mjs_02q6n0r._.js +3 -0
- package/.next-node/server/chunks/ssr/[root-of-the-server]__0b06nll._.js +3 -0
- package/.next-node/server/chunks/ssr/[root-of-the-server]__0fizn_-._.js +3 -0
- package/.next-node/server/chunks/ssr/[root-of-the-server]__0melyg_._.js +3 -0
- package/.next-node/server/chunks/ssr/[root-of-the-server]__0nyueky._.js +33 -0
- package/.next-node/server/chunks/ssr/[root-of-the-server]__0twe8p9._.js +3 -0
- package/.next-node/server/chunks/ssr/[root-of-the-server]__0ze2_dq._.js +3 -0
- package/.next-node/server/chunks/ssr/[root-of-the-server]__112mz-6._.js +14 -0
- package/.next-node/server/chunks/ssr/[root-of-the-server]__11zr9ex._.js +3 -0
- package/.next-node/server/chunks/ssr/[root-of-the-server]__1io3bae._.js +33 -0
- package/.next-node/server/chunks/ssr/[root-of-the-server]__1oe4hc5._.js +3 -0
- package/.next-node/server/chunks/ssr/[root-of-the-server]__1rasrr9._.js +3 -0
- package/.next-node/server/chunks/ssr/[root-of-the-server]__1ypl2q0._.js +3 -0
- package/.next-node/server/chunks/ssr/[turbopack]_runtime.js +939 -0
- package/.next-node/server/chunks/ssr/_043p6h1._.js +3 -0
- package/.next-node/server/chunks/ssr/_0_b-2rs._.js +3 -0
- package/.next-node/server/chunks/ssr/_1ofgw5a._.js +3 -0
- package/.next-node/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js +3 -0
- package/.next-node/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js +3 -0
- package/.next-node/server/chunks/ssr/_next-internal_server_app_about_page_actions_0xvgj07.js +3 -0
- package/.next-node/server/chunks/ssr/_next-internal_server_app_guides_[slug]_page_actions_07fmjsl.js +3 -0
- package/.next-node/server/chunks/ssr/_next-internal_server_app_guides_page_actions_0vqxbaj.js +3 -0
- package/.next-node/server/chunks/ssr/_next-internal_server_app_page_actions_0hhsz1j.js +3 -0
- package/.next-node/server/chunks/ssr/_next-internal_server_app_s_[token]_page_actions_0kpicgu.js +3 -0
- package/.next-node/server/chunks/ssr/_next-internal_server_app_spec_page_actions_0d5m1h5.js +3 -0
- package/.next-node/server/chunks/ssr/app_workspace_tsx_16kkvlv._.js +102 -0
- package/.next-node/server/chunks/ssr/node_modules_01xbj_9._.js +33 -0
- package/.next-node/server/chunks/ssr/node_modules_1nkgb45._.js +23 -0
- package/.next-node/server/chunks/ssr/node_modules_lucide-react_dist_esm_createLucideIcon_mjs_046kvv3._.js +3 -0
- package/.next-node/server/chunks/ssr/node_modules_next_dist_0drixxt._.js +151 -0
- package/.next-node/server/chunks/ssr/node_modules_next_dist_1c5ky4f._.js +3 -0
- package/.next-node/server/chunks/ssr/node_modules_next_dist_1n3w9lb._.js +6 -0
- package/.next-node/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js +3 -0
- package/.next-node/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js +3 -0
- package/.next-node/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892.js +3 -0
- package/.next-node/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js +3 -0
- package/.next-node/server/functions-config-manifest.json +4 -0
- package/.next-node/server/middleware-build-manifest.js +24 -0
- package/.next-node/server/middleware-manifest.json +6 -0
- package/.next-node/server/next-font-manifest.js +1 -0
- package/.next-node/server/next-font-manifest.json +6 -0
- package/.next-node/server/pages/404.html +1 -0
- package/.next-node/server/pages/500.html +1 -0
- package/.next-node/server/pages-manifest.json +4 -0
- package/.next-node/server/prefetch-hints.json +81 -0
- package/.next-node/server/server-reference-manifest.js +1 -0
- package/.next-node/server/server-reference-manifest.json +5 -0
- package/.next-node/static/O0yz_3m0RU49CRdgEzJko/_buildManifest.js +11 -0
- package/.next-node/static/O0yz_3m0RU49CRdgEzJko/_clientMiddlewareManifest.js +1 -0
- package/.next-node/static/O0yz_3m0RU49CRdgEzJko/_ssgManifest.js +1 -0
- package/.next-node/static/chunks/001803_ikgvy0.js +1 -0
- package/.next-node/static/chunks/0cz1d0mv5g_q7.js +1 -0
- package/.next-node/static/chunks/18jc9s790l5j4.js +1 -0
- package/.next-node/static/chunks/19mx3mg6lkumu.js +1 -0
- package/.next-node/static/chunks/1mh6a-0e61pyc.js +1 -0
- package/.next-node/static/chunks/2-rtuqsgzmno4.js +22 -0
- package/.next-node/static/chunks/21_wi9mjjb4hi.js +1 -0
- package/.next-node/static/chunks/22i43cg4l4-dq.js +1 -0
- package/.next-node/static/chunks/24eykxjjs1eyd.js +100 -0
- package/.next-node/static/chunks/2q_ofqpogy1t8.css +1 -0
- package/.next-node/static/chunks/310vm2bl3xxpt.js +31 -0
- package/.next-node/static/chunks/3fntmmi971322.js +1 -0
- package/.next-node/static/chunks/turbopack-08z-qkls8a53k.js +1 -0
- package/bin/accord.mjs +45 -0
- package/drizzle/0000_mean_nitro.sql +24 -0
- package/drizzle/0001_dry_warlock.sql +19 -0
- package/drizzle/0002_cynical_mikhail_rasputin.sql +9 -0
- package/drizzle/0003_black_thing.sql +1 -0
- package/drizzle/meta/0000_snapshot.json +165 -0
- package/drizzle/meta/0001_snapshot.json +279 -0
- package/drizzle/meta/0002_snapshot.json +332 -0
- package/drizzle/meta/0003_snapshot.json +339 -0
- package/drizzle/meta/_journal.json +34 -0
- package/package.json +30 -0
- package/public/favicon.svg +1 -0
- package/public/file.svg +1 -0
- package/public/globe.svg +1 -0
- package/public/runner/accord-runner.mjs +799 -0
- package/public/window.svg +1 -0
- package/runner/accord-runner.mjs +150 -0
- package/runner/check.mjs +65 -0
- package/runner/config.mjs +35 -0
- package/runner/install.mjs +52 -0
- package/runner/protocol.mjs +50 -0
- package/runner/providers/claude.mjs +47 -0
- package/runner/providers/codex.mjs +27 -0
- package/runner/providers/index.mjs +5 -0
- package/server.js +44 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {};
|
|
2
|
+
globalThis.__RSC_MANIFEST["/api/workspace/route"] = {"moduleLoading":{"prefix":""},"clientModules":{},"ssrModuleMapping":{},"edgeSSRModuleMapping":{},"rscModuleMapping":{},"edgeRscModuleMapping":{},"entryCSSFiles":{},"entryJSFiles":{}};
|
|
3
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"devFiles": [],
|
|
3
|
+
"ampDevFiles": [],
|
|
4
|
+
"polyfillFiles": [
|
|
5
|
+
"static/chunks/0cz1d0mv5g_q7.js"
|
|
6
|
+
],
|
|
7
|
+
"lowPriorityFiles": [],
|
|
8
|
+
"rootMainFiles": [
|
|
9
|
+
"static/chunks/310vm2bl3xxpt.js",
|
|
10
|
+
"static/chunks/19mx3mg6lkumu.js",
|
|
11
|
+
"static/chunks/1mh6a-0e61pyc.js",
|
|
12
|
+
"static/chunks/2-rtuqsgzmno4.js",
|
|
13
|
+
"static/chunks/turbopack-08z-qkls8a53k.js"
|
|
14
|
+
],
|
|
15
|
+
"pages": {},
|
|
16
|
+
"ampFirstPages": [],
|
|
17
|
+
"rootMainFilesTree": {},
|
|
18
|
+
"pagesChunkGroupBootstrapParams": {},
|
|
19
|
+
"chunkLoadingGlobal": "TURBOPACK"
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
var R=require("../../../chunks/ssr/[turbopack]_runtime.js")("server/app/guides/[slug]/page.js")
|
|
2
|
+
R.c("server/chunks/ssr/[root-of-the-server]__0fizn_-._.js")
|
|
3
|
+
R.c("server/chunks/ssr/node_modules_next_dist_0drixxt._.js")
|
|
4
|
+
R.c("server/chunks/ssr/node_modules_next_dist_1n3w9lb._.js")
|
|
5
|
+
R.c("server/chunks/ssr/[root-of-the-server]__11zr9ex._.js")
|
|
6
|
+
R.c("server/chunks/ssr/[root-of-the-server]__112mz-6._.js")
|
|
7
|
+
R.c("server/chunks/ssr/_0_b-2rs._.js")
|
|
8
|
+
R.c("server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js")
|
|
9
|
+
R.c("server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js")
|
|
10
|
+
R.c("server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js")
|
|
11
|
+
R.c("server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892.js")
|
|
12
|
+
R.c("server/chunks/ssr/_next-internal_server_app_guides_[slug]_page_actions_07fmjsl.js")
|
|
13
|
+
R.m(57110)
|
|
14
|
+
module.exports=R.m(57110).exports
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":1,"files":["../../../../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../../../../node_modules/@swc/helpers/esm/_interop_require_default.js","../../../../../node_modules/@swc/helpers/package.json","../../../../../node_modules/next/dist/build/adapter/setup-node-env.external.js","../../../../../node_modules/next/dist/client/components/hooks-server-context.js","../../../../../node_modules/next/dist/client/components/static-generation-bailout.js","../../../../../node_modules/next/dist/client/lib/console.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../../node_modules/next/dist/compiled/source-map/package.json","../../../../../node_modules/next/dist/compiled/source-map/source-map.js","../../../../../node_modules/next/dist/compiled/stacktrace-parser/package.json","../../../../../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../../../../../node_modules/next/dist/compiled/ws/index.js","../../../../../node_modules/next/dist/compiled/ws/package.json","../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../node_modules/next/dist/lib/constants.js","../../../../../node_modules/next/dist/lib/framework/boundary-constants.js","../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../node_modules/next/dist/lib/is-error.js","../../../../../node_modules/next/dist/lib/picocolors.js","../../../../../node_modules/next/dist/lib/scheduler.js","../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../node_modules/next/dist/server/app-render/blocking-route-messages.js","../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/dynamic-rendering.js","../../../../../node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js","../../../../../node_modules/next/dist/server/app-render/instant-validation/boundary-tracking.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../node_modules/next/dist/server/app-render/staged-rendering.js","../../../../../node_modules/next/dist/server/app-render/sync-io-messages.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../node_modules/next/dist/server/dev/browser-logs/file-logger.js","../../../../../node_modules/next/dist/server/dynamic-rendering-utils.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../node_modules/next/dist/server/lib/parse-stack.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../node_modules/next/dist/server/lib/source-maps.js","../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../node_modules/next/dist/server/node-environment-baseline.js","../../../../../node_modules/next/dist/server/node-environment-extensions/console-dim.external.js","../../../../../node_modules/next/dist/server/node-environment-extensions/console-exit.js","../../../../../node_modules/next/dist/server/node-environment-extensions/console-file.js","../../../../../node_modules/next/dist/server/node-environment-extensions/date.js","../../../../../node_modules/next/dist/server/node-environment-extensions/error-inspect.js","../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../node_modules/next/dist/server/node-environment-extensions/io-utils.js","../../../../../node_modules/next/dist/server/node-environment-extensions/node-crypto.js","../../../../../node_modules/next/dist/server/node-environment-extensions/random.js","../../../../../node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js","../../../../../node_modules/next/dist/server/node-environment-extensions/web-crypto.js","../../../../../node_modules/next/dist/server/node-environment.js","../../../../../node_modules/next/dist/server/node-polyfill-crypto.js","../../../../../node_modules/next/dist/server/patch-error-inspect.js","../../../../../node_modules/next/dist/server/require-hook.js","../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../node_modules/next/dist/shared/lib/instant-messages.js","../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js","../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../node_modules/next/dist/shared/lib/promise-with-resolvers.js","../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../node_modules/next/package.json","../../../../../node_modules/react/cjs/react.development.js","../../../../../node_modules/react/cjs/react.production.js","../../../../../node_modules/react/index.js","../../../../../node_modules/react/package.json","../../../chunks/ssr/[root-of-the-server]__0fizn_-._.js","../../../chunks/ssr/[root-of-the-server]__0melyg_._.js","../../../chunks/ssr/[root-of-the-server]__112mz-6._.js","../../../chunks/ssr/[root-of-the-server]__11zr9ex._.js","../../../chunks/ssr/[turbopack]_runtime.js","../../../chunks/ssr/_0_b-2rs._.js","../../../chunks/ssr/_next-internal_server_app_guides_[slug]_page_actions_07fmjsl.js","../../../chunks/ssr/node_modules_01xbj_9._.js","../../../chunks/ssr/node_modules_1nkgb45._.js","../../../chunks/ssr/node_modules_next_dist_0drixxt._.js","../../../chunks/ssr/node_modules_next_dist_1c5ky4f._.js","../../../chunks/ssr/node_modules_next_dist_1n3w9lb._.js","../../../chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js","../../../chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js","../../../chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892.js","../../../chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"],"fileHashes":["ef6ac6914a3f24c9f4a98105a3bdd310","bcdfbca94848d30153fa83f8421423d7","50bb01754878225cf6730e02b44f84d6","a5446fb306fcfec27c39f81de38ec842","9c53694dd40423680deefb5a1e3c25af","57ca86e5858543e1466b92725355539a","11eb668649d2434d25d26977b8e01e49","02186196a2cc227a67f668f00873f72a","fa8a4dd27dcbde144881044b2fa74f64","cd28bbc5151decba058dfd44bd7f47ef","a8da0851d005c95af6d4ff8b8db146ce","a44c5b21be836995dd7bd25d00ed0d41","61445cc4a73d56b154f397d2e4213b60","4e6491a35b1970e74a940d26e575216a","0bcd39f6f5be09dab16374e3bf84459e","ce87d6acf7ef1610862d34a9c59528ea","d1e9d6e75ad3a9d63cc0825ec4ebe282","b81183ad70cf2df4130a6f7853eff593","edcceea1e2a5c13a14d12f4d422f733a","92d7eec9f49250bf6325e1b4186fb521","0b3ab74e31e82ffa9b20013ed883782e","15ad04875f6d43fc8bd602b20d828566","5fe712e91d39531cd872b189115c7a25","c07db8edca1ca7e626b14dbf4e3584a8","0aa24beea9e1b8ae34954feb1be5caa6","f9295c2e844d919b0be75fffe2e10989","9b1c71085acfacbddbca5126bca3f550","6505c89743b18298e0e22489f1d956ed","8f2d8843ff7d322ecc237601ab58e1d7","d90d4f1de46d810d671d85f21ec5d352","2eecc48be406b9c64276e31215c29e95","981807b2548ffbff8d9ad94a758813fb","9f6a333435676ba7b0045e6b0d2d9b98","2701737ab664a8fe7700053638aa0db8","33916079c6a49d35edf38970b6afa990","046a57d6280182df9f32d77ba452677f","94e9332b8f4251c1b03791e57aad9399","6978bf3fb2c443a8c9022d43a243c56a","8fb4ea2a1e97dc7ad2cbbf5641b1aa23","7175e4648ef6975b79e76f0f46dc69df","7a4c4e16ecb22ffb0ba224fa37e94a70","848334e0b7acedfd5656296df4adae7c","0a201256d245b3a0e27ed288b6ba68ae","498fc15d07579c19b3cc959a96eb5bb8","40c6916156cc44db5f0c8e266c9f1e60","1acc3875adfbadf8dd6721e71e776ecd","1eb18df669f40e7a0c8e077b365c907d","08cab8a9c8062eac4f6b9cbcc303417a","bef9750470e394d3052dfe5a7847e9a0","4d1a01dfd6b6423b2d0ff0467f613bd8","7cfcc764f9b49f84e568c2a8b481ef89","ecbf1e0ab3ad74e5979ab5771d710880","59f473418a3a0c96c8ec855aa72bd02a","d3c2a37fdf66b455a0ed47d33fc12229","215309237f9a05ec8f52edadcd0565bf","5f3e641690915ca863053b107ae0493a","44cca5b4413d63e3179289d31fe1bcf1","ce930365528e6b0f94d346e8a3a6c976","85ef440bb2c4d6dcc19f40e9d77059e3","b73d42aa8f40f578ac38efd8516ad8a3","fc4f7117734aa11e26028c3a1f0e9934","4b5216f48144eab06a89f40a112df0f9","7f7c41d2d2c4e4ea0359ce7e30c4676d","a52c1bfa60cdd122eb82001cf748b39b","4daf2c54f6e769ac3f1c55e2d2356e62","67530655ee6d2037c694d851f60a4d3a","72e15054e5bb83aa2714e9aa0f2a8aaa","72944fa2cce5836dad49dfd7147626d0","3c5c716d6aebf4093db91e57fe322e0c","64c0567172a45f553110cf14514d76dc","f5232a6a89b9b1646513f6f36cfd6edc","ed734e4322f6faf639acccc2130bd1f9","3a55a78645b57706246de6914d4ce134","438a096196cbf3f40712fc244347eced","59be47cbf4cb15affb56354159123835","e124239b7fff31a73bfc3e95cfc593d3","38636bd694da4120897a2a695111039c","03f54ee64db45e6ac7025c881590f862","48538028ed97d91e767563f56035e684","217152373b3f900ae15ce0920bb06da9","6dadc2917fc514e7e4c6f4cabe7d69a6","a81a01b4510a203a8811e202d3537fe8","37ac4cbd6b18d52a47105218c3573c36","5ab4d38c634c37598fc59a79eeef302f","e2a4479a35cb46058fa5fa4148e39287","a5ceecfe744045263b3b4c06e4d48cce","5654b3d7d7805129b98db879f3bbd2af","deef54fb4c402325da2038fd78856071","8be729967149c753a0ebdfd2a30fb36e","6cfa9b6c7f669652c51714ab37027c35","5a4e822ccf5750a776289b67f7111c73","bd95af69943c6b10d72a1520da203070","88a3f0c77d41ba23215f1eecb18c15ec","cb3f91d258bab3de7fdc07aa5e6487fe","961a7a50f0491ad79e2dcdb8414f2f3f","92baaf19e40002dfa428f80fe557d43d","fe62defb3b2cdb8347a7a26b0faa1c50","777f0a15db23b06a057627b8dd11a904","351719d04dc4486eb5edb618dbc9faf4","a23a958454e271fbedcfce53bc7bd212","b5b6559047be969dc3946d5078c5804e","4f0035e7e82084efeffadc1dd496488c","ab69e431343c9f83452ca2271310fab3","dba25453cca272a38c18c7ee60b0e5b0","ff03137db58f589e12f62bcced904db1","c8782a613f579f085ea13d4d80e80b86","f72b6e4ab06ddd4f1d11cf7e15e754f8","7b9cdc171d5254d6cfd481a1d688d849","cedd0e303a2a58a21e0ed99701073ecb","16e46fdae0f9e53f20442b629714017f","841c8f4939a96a5203d2842b9619c2db"],"entryHash":"d63d94b144b71118ef27f920f6ec4ef8"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {};
|
|
2
|
+
globalThis.__RSC_MANIFEST["/guides/[slug]/page"] = {"moduleLoading":{"prefix":""},"clientModules":{"[project]/node_modules/next/dist/esm/client/components/layout-router.js":{"id":39756,"name":"*","chunks":["/_next/static/chunks/3fntmmi971322.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":37457,"name":"*","chunks":["/_next/static/chunks/3fntmmi971322.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js":{"id":47257,"name":"*","chunks":["/_next/static/chunks/3fntmmi971322.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js":{"id":92825,"name":"*","chunks":["/_next/static/chunks/3fntmmi971322.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":68017,"name":"*","chunks":["/_next/static/chunks/3fntmmi971322.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":97367,"name":"*","chunks":["/_next/static/chunks/3fntmmi971322.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":27201,"name":"*","chunks":["/_next/static/chunks/3fntmmi971322.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js":{"id":68027,"name":"*","chunks":["/_next/static/chunks/3fntmmi971322.js"],"async":false},"[project]/node_modules/next/dist/client/app-dir/link.js":{"id":22016,"name":"*","chunks":["/_next/static/chunks/3fntmmi971322.js","/_next/static/chunks/22i43cg4l4-dq.js"],"async":false}},"ssrModuleMapping":{"39756":{"*":{"id":2420,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0melyg_._.js","server/chunks/ssr/node_modules_next_dist_1c5ky4f._.js"],"async":false}},"37457":{"*":{"id":24017,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0melyg_._.js","server/chunks/ssr/node_modules_next_dist_1c5ky4f._.js"],"async":false}},"47257":{"*":{"id":77682,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0melyg_._.js","server/chunks/ssr/node_modules_next_dist_1c5ky4f._.js"],"async":false}},"92825":{"*":{"id":97296,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0melyg_._.js","server/chunks/ssr/node_modules_next_dist_1c5ky4f._.js"],"async":false}},"68017":{"*":{"id":61660,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0melyg_._.js","server/chunks/ssr/node_modules_next_dist_1c5ky4f._.js"],"async":false}},"97367":{"*":{"id":90574,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0melyg_._.js","server/chunks/ssr/node_modules_next_dist_1c5ky4f._.js"],"async":false}},"27201":{"*":{"id":60704,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0melyg_._.js","server/chunks/ssr/node_modules_next_dist_1c5ky4f._.js"],"async":false}},"68027":{"*":{"id":40622,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0melyg_._.js","server/chunks/ssr/node_modules_next_dist_1c5ky4f._.js","server/chunks/ssr/node_modules_01xbj_9._.js"],"async":false}},"22016":{"*":{"id":38246,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0melyg_._.js","server/chunks/ssr/node_modules_next_dist_1c5ky4f._.js","server/chunks/ssr/node_modules_1nkgb45._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"39756":{"*":{"id":26768,"name":"*","chunks":[],"async":false}},"37457":{"*":{"id":17910,"name":"*","chunks":[],"async":false}},"47257":{"*":{"id":92977,"name":"*","chunks":[],"async":false}},"92825":{"*":{"id":48552,"name":"*","chunks":[],"async":false}},"68017":{"*":{"id":83919,"name":"*","chunks":[],"async":false}},"97367":{"*":{"id":24150,"name":"*","chunks":[],"async":false}},"27201":{"*":{"id":40771,"name":"*","chunks":[],"async":false}},"68027":{"*":{"id":82509,"name":"*","chunks":[],"async":false}},"22016":{"*":{"id":84707,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/layout":[{"path":"static/chunks/2q_ofqpogy1t8.css","inlined":false}],"[project]/node_modules/next/dist/client/components/builtin/global-error":[{"path":"static/chunks/2q_ofqpogy1t8.css","inlined":false}],"[project]/app/guides/[slug]/page":[{"path":"static/chunks/2q_ofqpogy1t8.css","inlined":false}]},"entryJSFiles":{"[project]/app/layout":["static/chunks/3fntmmi971322.js"],"[project]/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/3fntmmi971322.js"],"[project]/app/guides/[slug]/page":["static/chunks/3fntmmi971322.js","static/chunks/22i43cg4l4-dq.js"]}};
|
|
3
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/2q_ofqpogy1t8.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/310vm2bl3xxpt.js"/><script src="/_next/static/chunks/19mx3mg6lkumu.js" async=""></script><script src="/_next/static/chunks/1mh6a-0e61pyc.js" async=""></script><script src="/_next/static/chunks/2-rtuqsgzmno4.js" async=""></script><script src="/_next/static/chunks/turbopack-08z-qkls8a53k.js" async=""></script><script src="/_next/static/chunks/3fntmmi971322.js" async=""></script><script src="/_next/static/chunks/22i43cg4l4-dq.js" async=""></script><title>How to write acceptance criteria that developers and QA can test | Accord</title><meta name="description" content="Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested."/><meta name="application-name" content="Accord"/><meta name="referrer" content="strict-origin-when-cross-origin"/><meta name="robots" content="index, follow"/><link rel="canonical" href="https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa"/><meta property="og:title" content="How to write acceptance criteria that developers and QA can test | Accord"/><meta property="og:description" content="Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested."/><meta property="og:url" content="https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa"/><meta property="og:site_name" content="Accord"/><meta property="og:locale" content="en_US"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary"/><meta name="twitter:title" content="How to write acceptance criteria that developers and QA can test | Accord"/><meta name="twitter:description" content="Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested."/><link rel="shortcut icon" href="/favicon.svg"/><link rel="icon" href="/favicon.svg"/><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body class="antialiased"><div hidden=""><!--$--><!--/$--></div><div class="public-site"><a class="public-skip" href="#content">Skip to content</a><header class="public-header"><a class="public-brand" href="/about" aria-label="Accord product overview"><span class="brand-mini" aria-hidden="true">a</span>accord</a><nav aria-label="Main navigation"><a href="/about">Product</a><a href="/guides">Guides</a><a class="button primary" href="/">Open workspace</a></nav></header><main id="content"><article class="public-article"><nav aria-label="Breadcrumb"><a href="/about">Accord</a> / <a href="/guides">Guides</a></nav><header><p class="public-kicker">DEVELOPMENT PRACTICE</p><h1>How to write acceptance criteria that developers and QA can test</h1><p class="public-lead">Acceptance criteria connect an intention to a test. They should let a developer, tester and product owner independently recognise whether a feature behaves as agreed.</p></header><nav class="public-toc" aria-label="On this page"><strong>On this page</strong><ol><li><a href="#section-1">Describe behaviour, not implementation guesses</a></li><li><a href="#section-2">Use Given, When, Then where it helps</a></li><li><a href="#section-3">Cover the edges that change the outcome</a></li><li><a href="#section-4">Record evidence per criterion</a></li><li><a href="#section-5">Re-test after implementation changes</a></li></ol></nav><section id="section-1"><h2>Describe behaviour, not implementation guesses</h2><p>“The form works correctly” is ambiguous. “Submitting a positive whole number of minutes and a non-empty task name adds one session to the history” gives the team an observable result. Avoid specifying a library or internal function unless it is a real constraint.</p></section><section id="section-2"><h2>Use Given, When, Then where it helps</h2><p>Given a manager viewing their own pending expense, when they attempt to approve it, then the system rejects the action and the expense stays pending. Include direct requests as well as button clicks when access control matters: hiding a button alone does not enforce a permission.</p></section><section id="section-3"><h2>Cover the edges that change the outcome</h2><p>Choose boundaries from the requirement rather than inventing them during coding. For a session duration of 1–480 whole minutes, test 1 and 480 as valid boundaries, and 0, 481 and a fractional value as invalid.</p><ul><li>Happy path: the expected user action succeeds.</li><li>Validation: missing, malformed and boundary inputs behave predictably.</li><li>Permissions: unauthorised actions are rejected.</li><li>Persistence: refresh and repeated actions preserve the intended state.</li><li>Failure recovery: users receive useful feedback and can retry safely.</li><li>Accessibility: the workflow is usable with a keyboard and meaningful labels.</li></ul></section><section id="section-4"><h2>Record evidence per criterion</h2><p>Record the build or commit, environment, steps, actual result and any supporting evidence. A green unit-test suite is useful, but it does not by itself prove every product criterion. Mark untested behaviour as Not tested and record a failure with reproduction steps.</p></section><section id="section-5"><h2>Re-test after implementation changes</h2><p>Previous passes apply to the work that was tested. When a new implementation or a changed requirement affects a ticket, preserve the old QA as history and test the current criteria again. Accord separates AI-reported evidence from recorded QA so an implementation report does not silently complete a ticket.</p></section><aside class="public-toc"><h2>Put the process into practice.</h2><p>Keep requirements, decisions, linked tickets and QA evidence together in Accord.</p><a class="button primary" href="/">Open workspace</a></aside><nav aria-label="Related guides"><h2>Keep reading</h2><p><a href="/guides/software-requirements-template">Software requirements template for development teams<!-- --> →</a></p><p><a href="/guides/ai-development-change-requests">Manage software change requests during AI-assisted development<!-- --> →</a></p></nav></article></main><footer class="public-footer"><div><strong>Accord</strong><p>Requirements, agreed. Delivery, verified.</p><a href="/">Open your workspace →</a></div><nav aria-label="Resource links"><a href="/about">Software requirements management</a><a href="/guides/software-requirements-template">Software requirements template for development teams</a><a href="/guides/acceptance-criteria-and-qa">How to write acceptance criteria that developers and QA can test</a><a href="/guides/ai-development-change-requests">Manage software change requests during AI-assisted development</a></nav></footer><script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://accord-spec-workspace.mariusm.chatgpt.site/about#organization","name":"Accord","url":"https://accord-spec-workspace.mariusm.chatgpt.site/about"},{"@type":"WebSite","@id":"https://accord-spec-workspace.mariusm.chatgpt.site/about#website","name":"Accord","url":"https://accord-spec-workspace.mariusm.chatgpt.site/about","inLanguage":"en","publisher":{"@id":"https://accord-spec-workspace.mariusm.chatgpt.site/about#organization"}},{"@type":"WebPage","@id":"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa#page","url":"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa","name":"How to write acceptance criteria that developers and QA can test | Accord","description":"Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested.","inLanguage":"en","isPartOf":{"@id":"https://accord-spec-workspace.mariusm.chatgpt.site/about#website"}},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Accord","item":"https://accord-spec-workspace.mariusm.chatgpt.site/about"},{"@type":"ListItem","position":2,"name":"Guides","item":"https://accord-spec-workspace.mariusm.chatgpt.site/guides"},{"@type":"ListItem","position":3,"name":"How to write acceptance criteria that developers and QA can test","item":"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa"}]}]}</script></div><!--$--><!--/$--><script src="/_next/static/chunks/310vm2bl3xxpt.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/_next/static/chunks/3fntmmi971322.js\"],\"default\"]\n3:I[37457,[\"/_next/static/chunks/3fntmmi971322.js\"],\"default\"]\n5:I[97367,[\"/_next/static/chunks/3fntmmi971322.js\"],\"OutletBoundary\"]\n6:\"$Sreact.suspense\"\n9:I[97367,[\"/_next/static/chunks/3fntmmi971322.js\"],\"ViewportBoundary\"]\nb:I[97367,[\"/_next/static/chunks/3fntmmi971322.js\"],\"MetadataBoundary\"]\nd:I[68027,[\"/_next/static/chunks/3fntmmi971322.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/2q_ofqpogy1t8.css\",\"style\"]\n8:X\n0:{\"P\":null,\"c\":[\"\",\"guides\",\"acceptance-criteria-and-qa\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"guides\",{\"children\":[[\"slug\",\"acceptance-criteria-and-qa\",\"d\",[]],{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2q_ofqpogy1t8.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/3fntmmi971322.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"antialiased\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[\"$L4\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/22i43cg4l4-dq.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@7\"}]}]]}],{},null,false,null]},null,false,\"$8\"]},null,false,\"$8\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L9\",null,{\"children\":\"$La\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lc\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$d\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2q_ofqpogy1t8.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"O0yz_3m0RU49CRdgEzJko\"}\ne:I[22016,[\"/_next/static/chunks/3fntmmi971322.js\",\"/_next/static/chunks/22i43cg4l4-dq.js\"],\"\"]\n8:C\n4:[\"$\",\"div\",null,{\"className\":\"public-site\",\"children\":[[\"$\",\"a\",null,{\"className\":\"public-skip\",\"href\":\"#content\",\"children\":\"Skip to content\"}],[\"$\",\"header\",null,{\"className\":\"public-header\",\"children\":[[\"$\",\"a\",null,{\"className\":\"public-brand\",\"href\":\"/about\",\"aria-label\":\"Accord product overview\",\"children\":[[\"$\",\"span\",null,{\"className\":\"brand-mini\",\"aria-hidden\":\"true\",\"children\":\"a\"}],\"accord\"]}],[\"$\",\"nav\",null,{\"aria-label\":\"Main navigation\",\"children\":[[\"$\",\"a\",null,{\"href\":\"/about\",\"children\":\"Product\"}],[\"$\",\"$Le\",null,{\"href\":\"/guides\",\"children\":\"Guides\"}],[\"$\",\"$Le\",null,{\"className\":\"button primary\",\"href\":\"/\",\"children\":\"Open workspace\"}]]}]]}],[\"$\",\"main\",null,{\"id\":\"content\",\"children\":[\"$\",\"article\",null,{\"className\":\"public-article\",\"children\":[[\"$\",\"nav\",null,{\"aria-label\":\"Breadcrumb\",\"children\":[[\"$\",\"a\",null,{\"href\":\"/about\",\"children\":\"Accord\"}],\" / \",[\"$\",\"$Le\",null,{\"href\":\"/guides\",\"children\":\"Guides\"}]]}],[\"$\",\"header\",null,{\"children\":[[\"$\",\"p\",null,{\"className\":\"public-kicker\",\"children\":\"DEVELOPMENT PRACTICE\"}],[\"$\",\"h1\",null,{\"children\":\"How to write acceptance criteria that developers and QA can test\"}],[\"$\",\"p\",null,{\"className\":\"public-lead\",\"children\":\"Acceptance criteria connect an intention to a test. They should let a developer, tester and product owner independently recognise whether a feature behaves as agreed.\"}]]}],[\"$\",\"nav\",null,{\"className\":\"public-toc\",\"aria-label\":\"On this page\",\"children\":[[\"$\",\"strong\",null,{\"children\":\"On this page\"}],[\"$\",\"ol\",null,{\"children\":[[\"$\",\"li\",\"Describe behaviour, not implementation guesses\",{\"children\":[\"$\",\"a\",null,{\"href\":\"#section-1\",\"children\":\"Describe behaviour, not implementation guesses\"}]}],[\"$\",\"li\",\"Use Given, When, Then where it helps\",{\"children\":[\"$\",\"a\",null,{\"href\":\"#section-2\",\"children\":\"Use Given, When, Then where it helps\"}]}],[\"$\",\"li\",\"Cover the edges that change the outcome\",{\"children\":[\"$\",\"a\",null,{\"href\":\"#section-3\",\"children\":\"Cover the edges that change the outcome\"}]}],[\"$\",\"li\",\"Record evidence per criterion\",{\"children\":[\"$\",\"a\",null,{\"href\":\"#section-4\",\"children\":\"Record evidence per criterion\"}]}],[\"$\",\"li\",\"Re-test after implementation changes\",{\"children\":[\"$\",\"a\",null,{\"href\":\"#section-5\",\"children\":\"Re-test after implementation changes\"}]}]]}]]}],[[\"$\",\"section\",\"Describe behaviour, not implementation guesses\",{\"id\":\"section-1\",\"children\":[[\"$\",\"h2\",null,{\"children\":\"Describe behaviour, not implementation guesses\"}],[\"$\",\"p\",null,{\"children\":\"“The form works correctly” is ambiguous. “Submitting a positive whole number of minutes and a non-empty task name adds one session to the history” gives the team an observable result. Avoid specifying a library or internal function unless it is a real constraint.\"}],\"$undefined\"]}],[\"$\",\"section\",\"Use Given, When, Then where it helps\",{\"id\":\"section-2\",\"children\":[[\"$\",\"h2\",null,{\"children\":\"Use Given, When, Then where it helps\"}],[\"$\",\"p\",null,{\"children\":\"Given a manager viewing their own pending expense, when they attempt to approve it, then the system rejects the action and the expense stays pending. Include direct requests as well as button clicks when access control matters: hiding a button alone does not enforce a permission.\"}],\"$undefined\"]}],[\"$\",\"section\",\"Cover the edges that change the outcome\",{\"id\":\"section-3\",\"children\":[[\"$\",\"h2\",null,{\"children\":\"Cover the edges that change the outcome\"}],[\"$\",\"p\",null,{\"children\":\"Choose boundaries from the requirement rather than inventing them during coding. For a session duration of 1–480 whole minutes, test 1 and 480 as valid boundaries, and 0, 481 and a fractional value as invalid.\"}],[\"$\",\"ul\",null,{\"children\":[[\"$\",\"li\",\"Happy path: the expected user action succeeds.\",{\"children\":\"Happy path: the expected user action succeeds.\"}],[\"$\",\"li\",\"Validation: missing, malformed and boundary inputs behave predictably.\",{\"children\":\"Validation: missing, malformed and boundary inputs behave predictably.\"}],[\"$\",\"li\",\"Permissions: unauthorised actions are rejected.\",{\"children\":\"Permissions: unauthorised actions are rejected.\"}],\"$Lf\",\"$L10\",\"$L11\"]}]]}],\"$L12\",\"$L13\"],\"$L14\",\"$L15\"]}]}],\"$L16\",\"$L17\"]}]\nf:[\"$\",\"li\",\"Persistence: refresh and repeated actions preserve the intended state.\",{\"children\":\"Persistence: refresh and repeated actions preserve the intended state.\"}]\n10:[\"$\",\"li\",\"Failure recovery: users receive useful feedback and can retry safely.\",{\"children\":\"Failure recovery: users receive useful feedback and can retry safely.\"}]\n11:[\"$\",\"li\",\"Accessibility: the workflow is usable with a keyboard and meaningful labels.\",{\"children\":\"Accessibility: the workflow is usable with a keyboard and meaningful labels.\"}]\n12:[\"$\",\"section\",\"Record evidence per criterion\",{\"id\":\"section-4\",\"children\":[[\"$\",\"h2\",null,{\"children\":\"Record evidence per criterion\"}],[\"$\",\"p\",null,{\"children\":\"Record the build or commit, environment, steps, actual result and any supporting evidence. A green unit-test suite is useful, but it does not by itself prove every product criterion. Mark untested behaviour as Not tested and record a failure with reproduction steps.\"}],\"$undefined\"]}]\n13:[\"$\",\"section\",\"Re-test after implementation changes\",{\"id\":\"section-5\",\"children\":[[\"$\",\"h2\",null,{\"children\":\"Re-test after implementation changes\"}],[\"$\",\"p\",null,{\"children\":\"Previous passes apply to the work that was tested. When a new implementation or a changed requirement affects a ticket, preserve the old QA as history and test the current criteria again. Accord separates AI-reported evidence from recorded QA so an implementation report does not silently complete a ticket.\"}],\"$undefined\"]}]\n14:[\"$\",\"aside\",null,{\"className\":\"public-toc\",\"children\":[[\"$\",\"h2\",null,{\"children\":\"Put the process into practice.\"}],[\"$\",\"p\",null,{\"children\":\"Keep requirements, decisions, linked tickets and QA evidence together in Accord.\"}],[\"$\",\"$Le\",null,{\"className\":\"button primary\",\"href\":\"/\",\"children\":\"Open workspace\"}]]}]\n15:[\"$\",\"nav\",null,{\"aria-label\":\"Related guides\",\"children\":[[\"$\",\"h2\",null,{\"children\":\"Keep reading\"}],[[\"$\",\"p\",\"software-requirements-template\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/guides/software-requirements-template\",\"children\":[\"Software requirements template for development teams\",\" →\"]}]}],[\"$\",\"p\",\"ai-development-change-requests\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/guides/ai-development-change-requests\",\"children\":[\"Manage software change requests during AI-assisted development\",\" →\"]}]}]]]}]\n16:[\"$\",\"footer\",null,{\"className\":\"public-footer\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Accord\"}],[\"$\",\"p\",null,{\"children\":\"Requirements, agreed. Delivery, verified.\"}],[\"$\",\"$Le\",null,{\"href\":\"/\",\"children\":\"Open your workspace →\"}]]}],[\"$\",\"nav\",null,{\"aria-label\":\"Resource links\",\"children\":[[\"$\",\"a\",null,{\"href\":\"/about\",\"children\":\"Software requirements management\"}],[[\"$\",\"a\",\"software-requirements-template\",{\"href\":\"/guides/software-requirements-template\",\"children\":\"Software requirements template for development teams\"}],[\"$\",\"a\",\"acceptance-criteria-and-qa\",{\"href\":\"/guides/acceptance-criteria-and-qa\",\"children\":\"How to write acceptance criteria that developers and QA can test\"}],[\"$\",\"a\",\"ai-development-change-requests\",{\"href\":\"/guides/ai-development-change-requests\",\"children\":\"Manage software change requests during AI-assisted development\"}]]]}]]}]\n18:T617,{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://accord-spec-workspace.mariusm.chatgpt.site/about#organization\",\"name\":\"Accord\",\"url\":\"https://accord-spec-workspace.mariusm.chatgpt.site/about\"},{\"@type\":\"WebSite\",\"@id\":\"https://accord-spec-workspace.mariusm.chatgpt.site/about#website\",\"name\":\"Accord\",\"url\":\"https://accord-spec-workspace.mariusm.chatgpt.site/about\",\"inLanguage\":\"en\",\"publisher\":{\"@id\":\"https://accord-spec-workspace.mariusm.chatgpt.site/about#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa#page\",\"url\":\"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa\",\"name\":\"How to write acceptance criteria that developers and QA can test | Accord\",\"description\":\"Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested.\",\"inLanguage\":\"en\",\"isPartOf\":{\"@id\":\"https://accord-spec-workspace.mariusm.chatgpt.site/about#website\"}},{\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accord\",\"item\":\"https://accord-spec-workspace.mariusm.chatgpt.site/about\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Guides\",\"item\":\"https://accord-spec-workspace.mariusm.chatgpt.site/guides\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to write acceptance criteria that developers and QA can test\",\"item\":\"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa\"}]}]}17:[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$18\"}}]\na:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n19:I[27201,[\"/_next/static/chunks/3fntmmi971322.js\"],\"IconMark\"]\n7:null\nc:[[\"$\",\"title\",\"0\",{\"children\":\"How to write acceptance criteria that developers and QA can test | Accord\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"Accord\"}],[\"$\",\"meta\",\"3\",{\"name\":\"referrer\",\"content\":\"strict-origin-when-cross-origin\"}],[\"$\",\"meta\",\"4\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"link\",\"5\",{\"rel\":\"canonical\",\"href\":\"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:title\",\"content\":\"How to write acceptance criteria that developers and QA can test | Accord\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:description\",\"content\":\"Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested.\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:url\",\"content\":\"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:site_name\",\"content\":\"Accord\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:card\",\"content\":\"summary\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:title\",\"content\":\"How to write acceptance criteria that developers and QA can test | Accord\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:description\",\"content\":\"Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested.\"}],[\"$\",\"link\",\"15\",{\"rel\":\"shortcut icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"link\",\"16\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"$L19\",\"17\",{}]]\n"])</script></body></html>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"headers": {
|
|
3
|
+
"x-nextjs-stale-time": "300",
|
|
4
|
+
"x-nextjs-prerender": "1",
|
|
5
|
+
"x-next-cache-tags": "_N_T_/layout,_N_T_/guides/layout,_N_T_/guides/[slug]/layout,_N_T_/guides/[slug]/page,_N_T_/guides/acceptance-criteria-and-qa"
|
|
6
|
+
},
|
|
7
|
+
"segmentPaths": [
|
|
8
|
+
"/_tree",
|
|
9
|
+
"/_full",
|
|
10
|
+
"/guides/$d$slug/__PAGE__"
|
|
11
|
+
],
|
|
12
|
+
"prefetchHints": {
|
|
13
|
+
"hints": 64,
|
|
14
|
+
"slots": {
|
|
15
|
+
"children": {
|
|
16
|
+
"hints": 96,
|
|
17
|
+
"slots": {
|
|
18
|
+
"children": {
|
|
19
|
+
"hints": 96,
|
|
20
|
+
"slots": {
|
|
21
|
+
"children": {
|
|
22
|
+
"hints": 160,
|
|
23
|
+
"slots": null
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
1:"$Sreact.fragment"
|
|
2
|
+
2:I[39756,["/_next/static/chunks/3fntmmi971322.js"],"default"]
|
|
3
|
+
3:I[37457,["/_next/static/chunks/3fntmmi971322.js"],"default"]
|
|
4
|
+
5:I[97367,["/_next/static/chunks/3fntmmi971322.js"],"OutletBoundary"]
|
|
5
|
+
6:"$Sreact.suspense"
|
|
6
|
+
9:I[97367,["/_next/static/chunks/3fntmmi971322.js"],"ViewportBoundary"]
|
|
7
|
+
b:I[97367,["/_next/static/chunks/3fntmmi971322.js"],"MetadataBoundary"]
|
|
8
|
+
d:I[68027,["/_next/static/chunks/3fntmmi971322.js"],"default",1]
|
|
9
|
+
:HL["/_next/static/chunks/2q_ofqpogy1t8.css","style"]
|
|
10
|
+
8:X
|
|
11
|
+
0:{"P":null,"c":["","guides","acceptance-criteria-and-qa"],"q":"","i":false,"f":[[["",{"children":["guides",{"children":[["slug","acceptance-criteria-and-qa","d",[]],{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4608]},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2q_ofqpogy1t8.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/3fntmmi971322.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$L4",[["$","script","script-0",{"src":"/_next/static/chunks/22i43cg4l4-dq.js","async":true,"nonce":"$undefined"}]],["$","$L5",null,{"children":["$","$6",null,{"name":"Next.MetadataOutlet","children":"$@7"}]}]]}],{},null,false,null]},null,false,"$8"]},null,false,"$8"]},null,false,null],["$","$1","h",{"children":[null,["$","$L9",null,{"children":"$La"}],["$","div",null,{"hidden":true,"children":["$","$Lb",null,{"children":["$","$6",null,{"name":"Next.Metadata","children":"$Lc"}]}]}],null]}],false]],"m":"$undefined","G":["$d",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2q_ofqpogy1t8.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"O0yz_3m0RU49CRdgEzJko"}
|
|
12
|
+
e:I[22016,["/_next/static/chunks/3fntmmi971322.js","/_next/static/chunks/22i43cg4l4-dq.js"],""]
|
|
13
|
+
8:C
|
|
14
|
+
4:["$","div",null,{"className":"public-site","children":[["$","a",null,{"className":"public-skip","href":"#content","children":"Skip to content"}],["$","header",null,{"className":"public-header","children":[["$","a",null,{"className":"public-brand","href":"/about","aria-label":"Accord product overview","children":[["$","span",null,{"className":"brand-mini","aria-hidden":"true","children":"a"}],"accord"]}],["$","nav",null,{"aria-label":"Main navigation","children":[["$","a",null,{"href":"/about","children":"Product"}],["$","$Le",null,{"href":"/guides","children":"Guides"}],["$","$Le",null,{"className":"button primary","href":"/","children":"Open workspace"}]]}]]}],["$","main",null,{"id":"content","children":["$","article",null,{"className":"public-article","children":[["$","nav",null,{"aria-label":"Breadcrumb","children":[["$","a",null,{"href":"/about","children":"Accord"}]," / ",["$","$Le",null,{"href":"/guides","children":"Guides"}]]}],["$","header",null,{"children":[["$","p",null,{"className":"public-kicker","children":"DEVELOPMENT PRACTICE"}],["$","h1",null,{"children":"How to write acceptance criteria that developers and QA can test"}],["$","p",null,{"className":"public-lead","children":"Acceptance criteria connect an intention to a test. They should let a developer, tester and product owner independently recognise whether a feature behaves as agreed."}]]}],["$","nav",null,{"className":"public-toc","aria-label":"On this page","children":[["$","strong",null,{"children":"On this page"}],["$","ol",null,{"children":[["$","li","Describe behaviour, not implementation guesses",{"children":["$","a",null,{"href":"#section-1","children":"Describe behaviour, not implementation guesses"}]}],["$","li","Use Given, When, Then where it helps",{"children":["$","a",null,{"href":"#section-2","children":"Use Given, When, Then where it helps"}]}],["$","li","Cover the edges that change the outcome",{"children":["$","a",null,{"href":"#section-3","children":"Cover the edges that change the outcome"}]}],["$","li","Record evidence per criterion",{"children":["$","a",null,{"href":"#section-4","children":"Record evidence per criterion"}]}],["$","li","Re-test after implementation changes",{"children":["$","a",null,{"href":"#section-5","children":"Re-test after implementation changes"}]}]]}]]}],[["$","section","Describe behaviour, not implementation guesses",{"id":"section-1","children":[["$","h2",null,{"children":"Describe behaviour, not implementation guesses"}],["$","p",null,{"children":"“The form works correctly” is ambiguous. “Submitting a positive whole number of minutes and a non-empty task name adds one session to the history” gives the team an observable result. Avoid specifying a library or internal function unless it is a real constraint."}],"$undefined"]}],["$","section","Use Given, When, Then where it helps",{"id":"section-2","children":[["$","h2",null,{"children":"Use Given, When, Then where it helps"}],["$","p",null,{"children":"Given a manager viewing their own pending expense, when they attempt to approve it, then the system rejects the action and the expense stays pending. Include direct requests as well as button clicks when access control matters: hiding a button alone does not enforce a permission."}],"$undefined"]}],["$","section","Cover the edges that change the outcome",{"id":"section-3","children":[["$","h2",null,{"children":"Cover the edges that change the outcome"}],["$","p",null,{"children":"Choose boundaries from the requirement rather than inventing them during coding. For a session duration of 1–480 whole minutes, test 1 and 480 as valid boundaries, and 0, 481 and a fractional value as invalid."}],["$","ul",null,{"children":[["$","li","Happy path: the expected user action succeeds.",{"children":"Happy path: the expected user action succeeds."}],["$","li","Validation: missing, malformed and boundary inputs behave predictably.",{"children":"Validation: missing, malformed and boundary inputs behave predictably."}],["$","li","Permissions: unauthorised actions are rejected.",{"children":"Permissions: unauthorised actions are rejected."}],"$Lf","$L10","$L11"]}]]}],"$L12","$L13"],"$L14","$L15"]}]}],"$L16","$L17"]}]
|
|
15
|
+
f:["$","li","Persistence: refresh and repeated actions preserve the intended state.",{"children":"Persistence: refresh and repeated actions preserve the intended state."}]
|
|
16
|
+
10:["$","li","Failure recovery: users receive useful feedback and can retry safely.",{"children":"Failure recovery: users receive useful feedback and can retry safely."}]
|
|
17
|
+
11:["$","li","Accessibility: the workflow is usable with a keyboard and meaningful labels.",{"children":"Accessibility: the workflow is usable with a keyboard and meaningful labels."}]
|
|
18
|
+
12:["$","section","Record evidence per criterion",{"id":"section-4","children":[["$","h2",null,{"children":"Record evidence per criterion"}],["$","p",null,{"children":"Record the build or commit, environment, steps, actual result and any supporting evidence. A green unit-test suite is useful, but it does not by itself prove every product criterion. Mark untested behaviour as Not tested and record a failure with reproduction steps."}],"$undefined"]}]
|
|
19
|
+
13:["$","section","Re-test after implementation changes",{"id":"section-5","children":[["$","h2",null,{"children":"Re-test after implementation changes"}],["$","p",null,{"children":"Previous passes apply to the work that was tested. When a new implementation or a changed requirement affects a ticket, preserve the old QA as history and test the current criteria again. Accord separates AI-reported evidence from recorded QA so an implementation report does not silently complete a ticket."}],"$undefined"]}]
|
|
20
|
+
14:["$","aside",null,{"className":"public-toc","children":[["$","h2",null,{"children":"Put the process into practice."}],["$","p",null,{"children":"Keep requirements, decisions, linked tickets and QA evidence together in Accord."}],["$","$Le",null,{"className":"button primary","href":"/","children":"Open workspace"}]]}]
|
|
21
|
+
15:["$","nav",null,{"aria-label":"Related guides","children":[["$","h2",null,{"children":"Keep reading"}],[["$","p","software-requirements-template",{"children":["$","a",null,{"href":"/guides/software-requirements-template","children":["Software requirements template for development teams"," →"]}]}],["$","p","ai-development-change-requests",{"children":["$","a",null,{"href":"/guides/ai-development-change-requests","children":["Manage software change requests during AI-assisted development"," →"]}]}]]]}]
|
|
22
|
+
16:["$","footer",null,{"className":"public-footer","children":[["$","div",null,{"children":[["$","strong",null,{"children":"Accord"}],["$","p",null,{"children":"Requirements, agreed. Delivery, verified."}],["$","$Le",null,{"href":"/","children":"Open your workspace →"}]]}],["$","nav",null,{"aria-label":"Resource links","children":[["$","a",null,{"href":"/about","children":"Software requirements management"}],[["$","a","software-requirements-template",{"href":"/guides/software-requirements-template","children":"Software requirements template for development teams"}],["$","a","acceptance-criteria-and-qa",{"href":"/guides/acceptance-criteria-and-qa","children":"How to write acceptance criteria that developers and QA can test"}],["$","a","ai-development-change-requests",{"href":"/guides/ai-development-change-requests","children":"Manage software change requests during AI-assisted development"}]]]}]]}]
|
|
23
|
+
18:T617,{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://accord-spec-workspace.mariusm.chatgpt.site/about#organization","name":"Accord","url":"https://accord-spec-workspace.mariusm.chatgpt.site/about"},{"@type":"WebSite","@id":"https://accord-spec-workspace.mariusm.chatgpt.site/about#website","name":"Accord","url":"https://accord-spec-workspace.mariusm.chatgpt.site/about","inLanguage":"en","publisher":{"@id":"https://accord-spec-workspace.mariusm.chatgpt.site/about#organization"}},{"@type":"WebPage","@id":"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa#page","url":"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa","name":"How to write acceptance criteria that developers and QA can test | Accord","description":"Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested.","inLanguage":"en","isPartOf":{"@id":"https://accord-spec-workspace.mariusm.chatgpt.site/about#website"}},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Accord","item":"https://accord-spec-workspace.mariusm.chatgpt.site/about"},{"@type":"ListItem","position":2,"name":"Guides","item":"https://accord-spec-workspace.mariusm.chatgpt.site/guides"},{"@type":"ListItem","position":3,"name":"How to write acceptance criteria that developers and QA can test","item":"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa"}]}]}17:["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"$18"}}]
|
|
24
|
+
a:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
25
|
+
19:I[27201,["/_next/static/chunks/3fntmmi971322.js"],"IconMark"]
|
|
26
|
+
7:null
|
|
27
|
+
c:[["$","title","0",{"children":"How to write acceptance criteria that developers and QA can test | Accord"}],["$","meta","1",{"name":"description","content":"Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested."}],["$","meta","2",{"name":"application-name","content":"Accord"}],["$","meta","3",{"name":"referrer","content":"strict-origin-when-cross-origin"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa"}],["$","meta","6",{"property":"og:title","content":"How to write acceptance criteria that developers and QA can test | Accord"}],["$","meta","7",{"property":"og:description","content":"Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested."}],["$","meta","8",{"property":"og:url","content":"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa"}],["$","meta","9",{"property":"og:site_name","content":"Accord"}],["$","meta","10",{"property":"og:locale","content":"en_US"}],["$","meta","11",{"property":"og:type","content":"website"}],["$","meta","12",{"name":"twitter:card","content":"summary"}],["$","meta","13",{"name":"twitter:title","content":"How to write acceptance criteria that developers and QA can test | Accord"}],["$","meta","14",{"name":"twitter:description","content":"Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested."}],["$","link","15",{"rel":"shortcut icon","href":"/favicon.svg"}],["$","link","16",{"rel":"icon","href":"/favicon.svg"}],["$","$L19","17",{}]]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
1:"$Sreact.fragment"
|
|
2
|
+
2:I[39756,["/_next/static/chunks/3fntmmi971322.js"],"default"]
|
|
3
|
+
3:I[37457,["/_next/static/chunks/3fntmmi971322.js"],"default"]
|
|
4
|
+
5:I[97367,["/_next/static/chunks/3fntmmi971322.js"],"OutletBoundary"]
|
|
5
|
+
6:"$Sreact.suspense"
|
|
6
|
+
9:I[97367,["/_next/static/chunks/3fntmmi971322.js"],"ViewportBoundary"]
|
|
7
|
+
b:I[97367,["/_next/static/chunks/3fntmmi971322.js"],"MetadataBoundary"]
|
|
8
|
+
d:I[68027,["/_next/static/chunks/3fntmmi971322.js"],"default",1]
|
|
9
|
+
:HL["/_next/static/chunks/2q_ofqpogy1t8.css","style"]
|
|
10
|
+
8:X
|
|
11
|
+
0:{"P":null,"c":["","guides","acceptance-criteria-and-qa"],"q":"","i":false,"f":[[["",{"children":["guides",{"children":[["slug","acceptance-criteria-and-qa","d",[]],{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4608]},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2q_ofqpogy1t8.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/3fntmmi971322.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$L4",[["$","script","script-0",{"src":"/_next/static/chunks/22i43cg4l4-dq.js","async":true,"nonce":"$undefined"}]],["$","$L5",null,{"children":["$","$6",null,{"name":"Next.MetadataOutlet","children":"$@7"}]}]]}],{},null,false,null]},null,false,"$8"]},null,false,"$8"]},null,false,null],["$","$1","h",{"children":[null,["$","$L9",null,{"children":"$La"}],["$","div",null,{"hidden":true,"children":["$","$Lb",null,{"children":["$","$6",null,{"name":"Next.Metadata","children":"$Lc"}]}]}],null]}],false]],"m":"$undefined","G":["$d",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2q_ofqpogy1t8.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"O0yz_3m0RU49CRdgEzJko"}
|
|
12
|
+
e:I[22016,["/_next/static/chunks/3fntmmi971322.js","/_next/static/chunks/22i43cg4l4-dq.js"],""]
|
|
13
|
+
8:C
|
|
14
|
+
4:["$","div",null,{"className":"public-site","children":[["$","a",null,{"className":"public-skip","href":"#content","children":"Skip to content"}],["$","header",null,{"className":"public-header","children":[["$","a",null,{"className":"public-brand","href":"/about","aria-label":"Accord product overview","children":[["$","span",null,{"className":"brand-mini","aria-hidden":"true","children":"a"}],"accord"]}],["$","nav",null,{"aria-label":"Main navigation","children":[["$","a",null,{"href":"/about","children":"Product"}],["$","$Le",null,{"href":"/guides","children":"Guides"}],["$","$Le",null,{"className":"button primary","href":"/","children":"Open workspace"}]]}]]}],["$","main",null,{"id":"content","children":["$","article",null,{"className":"public-article","children":[["$","nav",null,{"aria-label":"Breadcrumb","children":[["$","a",null,{"href":"/about","children":"Accord"}]," / ",["$","$Le",null,{"href":"/guides","children":"Guides"}]]}],["$","header",null,{"children":[["$","p",null,{"className":"public-kicker","children":"DEVELOPMENT PRACTICE"}],["$","h1",null,{"children":"How to write acceptance criteria that developers and QA can test"}],["$","p",null,{"className":"public-lead","children":"Acceptance criteria connect an intention to a test. They should let a developer, tester and product owner independently recognise whether a feature behaves as agreed."}]]}],["$","nav",null,{"className":"public-toc","aria-label":"On this page","children":[["$","strong",null,{"children":"On this page"}],["$","ol",null,{"children":[["$","li","Describe behaviour, not implementation guesses",{"children":["$","a",null,{"href":"#section-1","children":"Describe behaviour, not implementation guesses"}]}],["$","li","Use Given, When, Then where it helps",{"children":["$","a",null,{"href":"#section-2","children":"Use Given, When, Then where it helps"}]}],["$","li","Cover the edges that change the outcome",{"children":["$","a",null,{"href":"#section-3","children":"Cover the edges that change the outcome"}]}],["$","li","Record evidence per criterion",{"children":["$","a",null,{"href":"#section-4","children":"Record evidence per criterion"}]}],["$","li","Re-test after implementation changes",{"children":["$","a",null,{"href":"#section-5","children":"Re-test after implementation changes"}]}]]}]]}],[["$","section","Describe behaviour, not implementation guesses",{"id":"section-1","children":[["$","h2",null,{"children":"Describe behaviour, not implementation guesses"}],["$","p",null,{"children":"“The form works correctly” is ambiguous. “Submitting a positive whole number of minutes and a non-empty task name adds one session to the history” gives the team an observable result. Avoid specifying a library or internal function unless it is a real constraint."}],"$undefined"]}],["$","section","Use Given, When, Then where it helps",{"id":"section-2","children":[["$","h2",null,{"children":"Use Given, When, Then where it helps"}],["$","p",null,{"children":"Given a manager viewing their own pending expense, when they attempt to approve it, then the system rejects the action and the expense stays pending. Include direct requests as well as button clicks when access control matters: hiding a button alone does not enforce a permission."}],"$undefined"]}],["$","section","Cover the edges that change the outcome",{"id":"section-3","children":[["$","h2",null,{"children":"Cover the edges that change the outcome"}],["$","p",null,{"children":"Choose boundaries from the requirement rather than inventing them during coding. For a session duration of 1–480 whole minutes, test 1 and 480 as valid boundaries, and 0, 481 and a fractional value as invalid."}],["$","ul",null,{"children":[["$","li","Happy path: the expected user action succeeds.",{"children":"Happy path: the expected user action succeeds."}],["$","li","Validation: missing, malformed and boundary inputs behave predictably.",{"children":"Validation: missing, malformed and boundary inputs behave predictably."}],["$","li","Permissions: unauthorised actions are rejected.",{"children":"Permissions: unauthorised actions are rejected."}],"$Lf","$L10","$L11"]}]]}],"$L12","$L13"],"$L14","$L15"]}]}],"$L16","$L17"]}]
|
|
15
|
+
f:["$","li","Persistence: refresh and repeated actions preserve the intended state.",{"children":"Persistence: refresh and repeated actions preserve the intended state."}]
|
|
16
|
+
10:["$","li","Failure recovery: users receive useful feedback and can retry safely.",{"children":"Failure recovery: users receive useful feedback and can retry safely."}]
|
|
17
|
+
11:["$","li","Accessibility: the workflow is usable with a keyboard and meaningful labels.",{"children":"Accessibility: the workflow is usable with a keyboard and meaningful labels."}]
|
|
18
|
+
12:["$","section","Record evidence per criterion",{"id":"section-4","children":[["$","h2",null,{"children":"Record evidence per criterion"}],["$","p",null,{"children":"Record the build or commit, environment, steps, actual result and any supporting evidence. A green unit-test suite is useful, but it does not by itself prove every product criterion. Mark untested behaviour as Not tested and record a failure with reproduction steps."}],"$undefined"]}]
|
|
19
|
+
13:["$","section","Re-test after implementation changes",{"id":"section-5","children":[["$","h2",null,{"children":"Re-test after implementation changes"}],["$","p",null,{"children":"Previous passes apply to the work that was tested. When a new implementation or a changed requirement affects a ticket, preserve the old QA as history and test the current criteria again. Accord separates AI-reported evidence from recorded QA so an implementation report does not silently complete a ticket."}],"$undefined"]}]
|
|
20
|
+
14:["$","aside",null,{"className":"public-toc","children":[["$","h2",null,{"children":"Put the process into practice."}],["$","p",null,{"children":"Keep requirements, decisions, linked tickets and QA evidence together in Accord."}],["$","$Le",null,{"className":"button primary","href":"/","children":"Open workspace"}]]}]
|
|
21
|
+
15:["$","nav",null,{"aria-label":"Related guides","children":[["$","h2",null,{"children":"Keep reading"}],[["$","p","software-requirements-template",{"children":["$","a",null,{"href":"/guides/software-requirements-template","children":["Software requirements template for development teams"," →"]}]}],["$","p","ai-development-change-requests",{"children":["$","a",null,{"href":"/guides/ai-development-change-requests","children":["Manage software change requests during AI-assisted development"," →"]}]}]]]}]
|
|
22
|
+
16:["$","footer",null,{"className":"public-footer","children":[["$","div",null,{"children":[["$","strong",null,{"children":"Accord"}],["$","p",null,{"children":"Requirements, agreed. Delivery, verified."}],["$","$Le",null,{"href":"/","children":"Open your workspace →"}]]}],["$","nav",null,{"aria-label":"Resource links","children":[["$","a",null,{"href":"/about","children":"Software requirements management"}],[["$","a","software-requirements-template",{"href":"/guides/software-requirements-template","children":"Software requirements template for development teams"}],["$","a","acceptance-criteria-and-qa",{"href":"/guides/acceptance-criteria-and-qa","children":"How to write acceptance criteria that developers and QA can test"}],["$","a","ai-development-change-requests",{"href":"/guides/ai-development-change-requests","children":"Manage software change requests during AI-assisted development"}]]]}]]}]
|
|
23
|
+
18:T617,{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://accord-spec-workspace.mariusm.chatgpt.site/about#organization","name":"Accord","url":"https://accord-spec-workspace.mariusm.chatgpt.site/about"},{"@type":"WebSite","@id":"https://accord-spec-workspace.mariusm.chatgpt.site/about#website","name":"Accord","url":"https://accord-spec-workspace.mariusm.chatgpt.site/about","inLanguage":"en","publisher":{"@id":"https://accord-spec-workspace.mariusm.chatgpt.site/about#organization"}},{"@type":"WebPage","@id":"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa#page","url":"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa","name":"How to write acceptance criteria that developers and QA can test | Accord","description":"Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested.","inLanguage":"en","isPartOf":{"@id":"https://accord-spec-workspace.mariusm.chatgpt.site/about#website"}},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Accord","item":"https://accord-spec-workspace.mariusm.chatgpt.site/about"},{"@type":"ListItem","position":2,"name":"Guides","item":"https://accord-spec-workspace.mariusm.chatgpt.site/guides"},{"@type":"ListItem","position":3,"name":"How to write acceptance criteria that developers and QA can test","item":"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa"}]}]}17:["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"$18"}}]
|
|
24
|
+
a:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
25
|
+
19:I[27201,["/_next/static/chunks/3fntmmi971322.js"],"IconMark"]
|
|
26
|
+
7:null
|
|
27
|
+
c:[["$","title","0",{"children":"How to write acceptance criteria that developers and QA can test | Accord"}],["$","meta","1",{"name":"description","content":"Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested."}],["$","meta","2",{"name":"application-name","content":"Accord"}],["$","meta","3",{"name":"referrer","content":"strict-origin-when-cross-origin"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa"}],["$","meta","6",{"property":"og:title","content":"How to write acceptance criteria that developers and QA can test | Accord"}],["$","meta","7",{"property":"og:description","content":"Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested."}],["$","meta","8",{"property":"og:url","content":"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa"}],["$","meta","9",{"property":"og:site_name","content":"Accord"}],["$","meta","10",{"property":"og:locale","content":"en_US"}],["$","meta","11",{"property":"og:type","content":"website"}],["$","meta","12",{"name":"twitter:card","content":"summary"}],["$","meta","13",{"name":"twitter:title","content":"How to write acceptance criteria that developers and QA can test | Accord"}],["$","meta","14",{"name":"twitter:description","content":"Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested."}],["$","link","15",{"rel":"shortcut icon","href":"/favicon.svg"}],["$","link","16",{"rel":"icon","href":"/favicon.svg"}],["$","$L19","17",{}]]
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
:HL["/_next/static/chunks/2q_ofqpogy1t8.css","style"]
|
|
2
|
+
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"guides","param":null,"prefetchHints":4192,"slots":{"children":{"name":"slug","param":{"type":"d","key":"acceptance-criteria-and-qa","siblings":[]},"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}}}},"staleTime":300,"buildId":"O0yz_3m0RU49CRdgEzJko"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
1:"$Sreact.fragment"
|
|
2
|
+
2:I[22016,["/_next/static/chunks/3fntmmi971322.js","/_next/static/chunks/22i43cg4l4-dq.js"],""]
|
|
3
|
+
f:X
|
|
4
|
+
14:X
|
|
5
|
+
14:C
|
|
6
|
+
0:{"buildId":"O0yz_3m0RU49CRdgEzJko","data":[{"rsc":["$","$1","c",{"children":[["$","div",null,{"className":"public-site","children":[["$","a",null,{"className":"public-skip","href":"#content","children":"Skip to content"}],["$","header",null,{"className":"public-header","children":[["$","a",null,{"className":"public-brand","href":"/about","aria-label":"Accord product overview","children":[["$","span",null,{"className":"brand-mini","aria-hidden":"true","children":"a"}],"accord"]}],["$","nav",null,{"aria-label":"Main navigation","children":[["$","a",null,{"href":"/about","children":"Product"}],["$","$L2",null,{"href":"/guides","children":"Guides"}],["$","$L2",null,{"className":"button primary","href":"/","children":"Open workspace"}]]}]]}],["$","main",null,{"id":"content","children":["$","article",null,{"className":"public-article","children":[["$","nav",null,{"aria-label":"Breadcrumb","children":[["$","a",null,{"href":"/about","children":"Accord"}]," / ",["$","$L2",null,{"href":"/guides","children":"Guides"}]]}],["$","header",null,{"children":[["$","p",null,{"className":"public-kicker","children":"DEVELOPMENT PRACTICE"}],["$","h1",null,{"children":"How to write acceptance criteria that developers and QA can test"}],["$","p",null,{"className":"public-lead","children":"Acceptance criteria connect an intention to a test. They should let a developer, tester and product owner independently recognise whether a feature behaves as agreed."}]]}],["$","nav",null,{"className":"public-toc","aria-label":"On this page","children":[["$","strong",null,{"children":"On this page"}],["$","ol",null,{"children":[["$","li","Describe behaviour, not implementation guesses",{"children":["$","a",null,{"href":"#section-1","children":"Describe behaviour, not implementation guesses"}]}],["$","li","Use Given, When, Then where it helps",{"children":["$","a",null,{"href":"#section-2","children":"Use Given, When, Then where it helps"}]}],["$","li","Cover the edges that change the outcome",{"children":["$","a",null,{"href":"#section-3","children":"Cover the edges that change the outcome"}]}],["$","li","Record evidence per criterion",{"children":["$","a",null,{"href":"#section-4","children":"Record evidence per criterion"}]}],["$","li","Re-test after implementation changes",{"children":["$","a",null,{"href":"#section-5","children":"Re-test after implementation changes"}]}]]}]]}],[["$","section","Describe behaviour, not implementation guesses",{"id":"section-1","children":[["$","h2",null,{"children":"Describe behaviour, not implementation guesses"}],["$","p",null,{"children":"“The form works correctly” is ambiguous. “Submitting a positive whole number of minutes and a non-empty task name adds one session to the history” gives the team an observable result. Avoid specifying a library or internal function unless it is a real constraint."}],"$undefined"]}],["$","section","Use Given, When, Then where it helps",{"id":"section-2","children":[["$","h2",null,{"children":"Use Given, When, Then where it helps"}],["$","p",null,{"children":"Given a manager viewing their own pending expense, when they attempt to approve it, then the system rejects the action and the expense stays pending. Include direct requests as well as button clicks when access control matters: hiding a button alone does not enforce a permission."}],"$undefined"]}],["$","section","Cover the edges that change the outcome",{"id":"section-3","children":[["$","h2",null,{"children":"Cover the edges that change the outcome"}],["$","p",null,{"children":"Choose boundaries from the requirement rather than inventing them during coding. For a session duration of 1–480 whole minutes, test 1 and 480 as valid boundaries, and 0, 481 and a fractional value as invalid."}],["$","ul",null,{"children":[["$","li","Happy path: the expected user action succeeds.",{"children":"Happy path: the expected user action succeeds."}],["$","li","Validation: missing, malformed and boundary inputs behave predictably.",{"children":"Validation: missing, malformed and boundary inputs behave predictably."}],["$","li","Permissions: unauthorised actions are rejected.",{"children":"Permissions: unauthorised actions are rejected."}],"$L3","$L4","$L5"]}]]}],"$L6","$L7"],"$L8","$L9"]}]}],"$La","$Lb"]}],["$Lc"],"$Ld"]}],"isPartial":"$@e","staleTime":"$f","varyParams":null},{"rsc":"$L10","isPartial":"$@11","staleTime":"$f","varyParams":null},{"rsc":"$L12","isPartial":"$@13","staleTime":"$f","varyParams":"$14"},{"rsc":"$L15","isPartial":"$@16","staleTime":"$f","varyParams":"$14"},{"rsc":"$L17","isPartial":"$@18","staleTime":"$f","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@19","rootVaryParams":null,"needsRuntimeRequest":"$@1a"}
|
|
7
|
+
1c:I[97367,["/_next/static/chunks/3fntmmi971322.js"],"OutletBoundary"]
|
|
8
|
+
1d:"$Sreact.suspense"
|
|
9
|
+
1f:I[97367,["/_next/static/chunks/3fntmmi971322.js"],"ViewportBoundary"]
|
|
10
|
+
20:I[97367,["/_next/static/chunks/3fntmmi971322.js"],"MetadataBoundary"]
|
|
11
|
+
21:I[27201,["/_next/static/chunks/3fntmmi971322.js"],"IconMark"]
|
|
12
|
+
22:I[39756,["/_next/static/chunks/3fntmmi971322.js"],"default"]
|
|
13
|
+
23:I[37457,["/_next/static/chunks/3fntmmi971322.js"],"default"]
|
|
14
|
+
:HL["/_next/static/chunks/2q_ofqpogy1t8.css","style"]
|
|
15
|
+
3:["$","li","Persistence: refresh and repeated actions preserve the intended state.",{"children":"Persistence: refresh and repeated actions preserve the intended state."}]
|
|
16
|
+
4:["$","li","Failure recovery: users receive useful feedback and can retry safely.",{"children":"Failure recovery: users receive useful feedback and can retry safely."}]
|
|
17
|
+
5:["$","li","Accessibility: the workflow is usable with a keyboard and meaningful labels.",{"children":"Accessibility: the workflow is usable with a keyboard and meaningful labels."}]
|
|
18
|
+
6:["$","section","Record evidence per criterion",{"id":"section-4","children":[["$","h2",null,{"children":"Record evidence per criterion"}],["$","p",null,{"children":"Record the build or commit, environment, steps, actual result and any supporting evidence. A green unit-test suite is useful, but it does not by itself prove every product criterion. Mark untested behaviour as Not tested and record a failure with reproduction steps."}],"$undefined"]}]
|
|
19
|
+
7:["$","section","Re-test after implementation changes",{"id":"section-5","children":[["$","h2",null,{"children":"Re-test after implementation changes"}],["$","p",null,{"children":"Previous passes apply to the work that was tested. When a new implementation or a changed requirement affects a ticket, preserve the old QA as history and test the current criteria again. Accord separates AI-reported evidence from recorded QA so an implementation report does not silently complete a ticket."}],"$undefined"]}]
|
|
20
|
+
8:["$","aside",null,{"className":"public-toc","children":[["$","h2",null,{"children":"Put the process into practice."}],["$","p",null,{"children":"Keep requirements, decisions, linked tickets and QA evidence together in Accord."}],["$","$L2",null,{"className":"button primary","href":"/","children":"Open workspace"}]]}]
|
|
21
|
+
9:["$","nav",null,{"aria-label":"Related guides","children":[["$","h2",null,{"children":"Keep reading"}],[["$","p","software-requirements-template",{"children":["$","a",null,{"href":"/guides/software-requirements-template","children":["Software requirements template for development teams"," →"]}]}],["$","p","ai-development-change-requests",{"children":["$","a",null,{"href":"/guides/ai-development-change-requests","children":["Manage software change requests during AI-assisted development"," →"]}]}]]]}]
|
|
22
|
+
a:["$","footer",null,{"className":"public-footer","children":[["$","div",null,{"children":[["$","strong",null,{"children":"Accord"}],["$","p",null,{"children":"Requirements, agreed. Delivery, verified."}],["$","$L2",null,{"href":"/","children":"Open your workspace →"}]]}],["$","nav",null,{"aria-label":"Resource links","children":[["$","a",null,{"href":"/about","children":"Software requirements management"}],[["$","a","software-requirements-template",{"href":"/guides/software-requirements-template","children":"Software requirements template for development teams"}],["$","a","acceptance-criteria-and-qa",{"href":"/guides/acceptance-criteria-and-qa","children":"How to write acceptance criteria that developers and QA can test"}],["$","a","ai-development-change-requests",{"href":"/guides/ai-development-change-requests","children":"Manage software change requests during AI-assisted development"}]]]}]]}]
|
|
23
|
+
1b:T617,{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://accord-spec-workspace.mariusm.chatgpt.site/about#organization","name":"Accord","url":"https://accord-spec-workspace.mariusm.chatgpt.site/about"},{"@type":"WebSite","@id":"https://accord-spec-workspace.mariusm.chatgpt.site/about#website","name":"Accord","url":"https://accord-spec-workspace.mariusm.chatgpt.site/about","inLanguage":"en","publisher":{"@id":"https://accord-spec-workspace.mariusm.chatgpt.site/about#organization"}},{"@type":"WebPage","@id":"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa#page","url":"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa","name":"How to write acceptance criteria that developers and QA can test | Accord","description":"Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested.","inLanguage":"en","isPartOf":{"@id":"https://accord-spec-workspace.mariusm.chatgpt.site/about#website"}},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Accord","item":"https://accord-spec-workspace.mariusm.chatgpt.site/about"},{"@type":"ListItem","position":2,"name":"Guides","item":"https://accord-spec-workspace.mariusm.chatgpt.site/guides"},{"@type":"ListItem","position":3,"name":"How to write acceptance criteria that developers and QA can test","item":"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa"}]}]}b:["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"$1b"}}]
|
|
24
|
+
c:["$","script","script-0",{"src":"/_next/static/chunks/22i43cg4l4-dq.js","async":true}]
|
|
25
|
+
d:["$","$L1c",null,{"children":["$","$1d",null,{"name":"Next.MetadataOutlet","children":"$@1e"}]}]
|
|
26
|
+
10:["$","$1","h",{"children":[null,["$","$L1f",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L20",null,{"children":["$","$1d",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"How to write acceptance criteria that developers and QA can test | Accord"}],["$","meta","1",{"name":"description","content":"Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested."}],["$","meta","2",{"name":"application-name","content":"Accord"}],["$","meta","3",{"name":"referrer","content":"strict-origin-when-cross-origin"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa"}],["$","meta","6",{"property":"og:title","content":"How to write acceptance criteria that developers and QA can test | Accord"}],["$","meta","7",{"property":"og:description","content":"Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested."}],["$","meta","8",{"property":"og:url","content":"https://accord-spec-workspace.mariusm.chatgpt.site/guides/acceptance-criteria-and-qa"}],["$","meta","9",{"property":"og:site_name","content":"Accord"}],["$","meta","10",{"property":"og:locale","content":"en_US"}],["$","meta","11",{"property":"og:type","content":"website"}],["$","meta","12",{"name":"twitter:card","content":"summary"}],["$","meta","13",{"name":"twitter:title","content":"How to write acceptance criteria that developers and QA can test | Accord"}],["$","meta","14",{"name":"twitter:description","content":"Turn vague requirements into observable acceptance criteria, then record QA outcomes and evidence against the exact feature and implementation tested."}],["$","link","15",{"rel":"shortcut icon","href":"/favicon.svg"}],["$","link","16",{"rel":"icon","href":"/favicon.svg"}],["$","$L21","17",{}]]}]}]}],null]}]
|
|
27
|
+
12:["$","$1","c",{"children":[null,["$","$L22",null,{"parallelRouterKey":"children","template":["$","$L23",null,{}]}]]}]
|
|
28
|
+
15:["$","$1","c",{"children":[null,["$","$L22",null,{"parallelRouterKey":"children","template":["$","$L23",null,{}]}]]}]
|
|
29
|
+
17:["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2q_ofqpogy1t8.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/3fntmmi971322.js","async":true}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"antialiased","children":["$","$L22",null,{"parallelRouterKey":"children","template":["$","$L23",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]]}]
|
|
30
|
+
1e:null
|
|
31
|
+
1a:true
|
|
32
|
+
f:300
|
|
33
|
+
f:C
|
|
34
|
+
19:0
|
|
35
|
+
11:"$undefined"
|
|
36
|
+
13:"$undefined"
|
|
37
|
+
16:"$undefined"
|
|
38
|
+
18:"$undefined"
|
|
39
|
+
e:"$undefined"
|