@starci/skills 1.1.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/INDEX.md +74 -0
- package/INDEX.vi.md +75 -0
- package/README.md +44 -0
- package/README.vi.md +43 -0
- package/SKILL.md +135 -0
- package/SKILL.vi.md +128 -0
- package/alias/INDEX.md +104 -0
- package/alias/INDEX.vi.md +104 -0
- package/alias/alias.json +297 -0
- package/bin/starci-skills.mjs +219 -0
- package/knowledge/INDEX.md +22 -0
- package/knowledge/INDEX.vi.md +22 -0
- package/knowledge/grammars/starci/DNA.md +146 -0
- package/knowledge/grammars/starci/DNA.vi.md +146 -0
- package/knowledge/grammars/starci/INDEX.md +25 -0
- package/knowledge/grammars/starci/INDEX.vi.md +25 -0
- package/knowledge/grammars/starci/family.md +50 -0
- package/knowledge/grammars/starci/family.vi.md +50 -0
- package/knowledge/grammars/starci/idioms.md +120 -0
- package/knowledge/grammars/starci/idioms.vi.md +121 -0
- package/knowledge/grammars/starci/playbook.md +36 -0
- package/knowledge/grammars/starci/playbook.vi.md +35 -0
- package/knowledge/patterns/be/INDEX.md +29 -0
- package/knowledge/patterns/be/INDEX.vi.md +29 -0
- package/knowledge/patterns/be/comment.md +80 -0
- package/knowledge/patterns/be/comment.vi.md +80 -0
- package/knowledge/patterns/be/error.md +86 -0
- package/knowledge/patterns/be/error.vi.md +86 -0
- package/knowledge/patterns/be/folder.md +87 -0
- package/knowledge/patterns/be/folder.vi.md +86 -0
- package/knowledge/patterns/be/function.md +80 -0
- package/knowledge/patterns/be/function.vi.md +80 -0
- package/knowledge/patterns/be/imports.md +79 -0
- package/knowledge/patterns/be/imports.vi.md +79 -0
- package/knowledge/patterns/be/naming.md +87 -0
- package/knowledge/patterns/be/naming.vi.md +87 -0
- package/knowledge/patterns/be/test.md +79 -0
- package/knowledge/patterns/be/test.vi.md +79 -0
- package/knowledge/patterns/be/typing.md +73 -0
- package/knowledge/patterns/be/typing.vi.md +73 -0
- package/knowledge/patterns/fe/INDEX.md +29 -0
- package/knowledge/patterns/fe/INDEX.vi.md +29 -0
- package/knowledge/patterns/fe/comment.md +70 -0
- package/knowledge/patterns/fe/comment.vi.md +70 -0
- package/knowledge/patterns/fe/error.md +61 -0
- package/knowledge/patterns/fe/error.vi.md +61 -0
- package/knowledge/patterns/fe/folder.md +98 -0
- package/knowledge/patterns/fe/folder.vi.md +95 -0
- package/knowledge/patterns/fe/function.md +70 -0
- package/knowledge/patterns/fe/function.vi.md +70 -0
- package/knowledge/patterns/fe/imports.md +87 -0
- package/knowledge/patterns/fe/imports.vi.md +87 -0
- package/knowledge/patterns/fe/naming.md +77 -0
- package/knowledge/patterns/fe/naming.vi.md +77 -0
- package/knowledge/patterns/fe/test.md +73 -0
- package/knowledge/patterns/fe/test.vi.md +73 -0
- package/knowledge/patterns/fe/typing.md +67 -0
- package/knowledge/patterns/fe/typing.vi.md +67 -0
- package/knowledge/ui/INDEX.md +101 -0
- package/knowledge/ui/INDEX.vi.md +101 -0
- package/knowledge/ui/composition/INDEX.md +60 -0
- package/knowledge/ui/composition/INDEX.vi.md +63 -0
- package/knowledge/ui/composition/accent.md +73 -0
- package/knowledge/ui/composition/accent.vi.md +74 -0
- package/knowledge/ui/composition/action.md +55 -0
- package/knowledge/ui/composition/action.vi.md +56 -0
- package/knowledge/ui/composition/coverage.md +37 -0
- package/knowledge/ui/composition/coverage.vi.md +37 -0
- package/knowledge/ui/composition/cta.md +79 -0
- package/knowledge/ui/composition/cta.vi.md +79 -0
- package/knowledge/ui/composition/feedback.md +55 -0
- package/knowledge/ui/composition/feedback.vi.md +56 -0
- package/knowledge/ui/composition/hierarchy.md +83 -0
- package/knowledge/ui/composition/hierarchy.vi.md +82 -0
- package/knowledge/ui/composition/layout.md +91 -0
- package/knowledge/ui/composition/layout.vi.md +93 -0
- package/knowledge/ui/composition/responsive.md +67 -0
- package/knowledge/ui/composition/responsive.vi.md +67 -0
- package/knowledge/ui/composition/state.md +105 -0
- package/knowledge/ui/composition/state.vi.md +106 -0
- package/knowledge/ui/presentation/INDEX.md +94 -0
- package/knowledge/ui/presentation/INDEX.vi.md +69 -0
- package/knowledge/ui/presentation/boundary.md +170 -0
- package/knowledge/ui/presentation/boundary.vi.md +169 -0
- package/knowledge/ui/presentation/font.md +155 -0
- package/knowledge/ui/presentation/font.vi.md +156 -0
- package/knowledge/ui/presentation/gap.md +181 -0
- package/knowledge/ui/presentation/gap.vi.md +181 -0
- package/knowledge/ui/presentation/margin.md +168 -0
- package/knowledge/ui/presentation/margin.vi.md +171 -0
- package/knowledge/ui/presentation/measure.md +174 -0
- package/knowledge/ui/presentation/measure.vi.md +178 -0
- package/knowledge/ui/presentation/overflow.md +142 -0
- package/knowledge/ui/presentation/overflow.vi.md +142 -0
- package/knowledge/ui/presentation/padding.md +293 -0
- package/knowledge/ui/presentation/padding.vi.md +292 -0
- package/knowledge/ui/presentation/surface.md +166 -0
- package/knowledge/ui/presentation/surface.vi.md +166 -0
- package/knowledge/ui/presentation/text-flow.md +123 -0
- package/knowledge/ui/presentation/text-flow.vi.md +123 -0
- package/knowledge/ui/presentation/tone.md +114 -0
- package/knowledge/ui/presentation/tone.vi.md +113 -0
- package/knowledge/ui/proof/INDEX.md +55 -0
- package/knowledge/ui/proof/INDEX.vi.md +55 -0
- package/knowledge/ui/proof/accessibility.md +67 -0
- package/knowledge/ui/proof/accessibility.vi.md +68 -0
- package/knowledge/ui/proof/contrast.md +58 -0
- package/knowledge/ui/proof/contrast.vi.md +57 -0
- package/knowledge/ui/proof/focus.md +76 -0
- package/knowledge/ui/proof/focus.vi.md +76 -0
- package/knowledge/ui/proof/motion.md +63 -0
- package/knowledge/ui/proof/motion.vi.md +64 -0
- package/knowledge/ui/proof/render-truth.md +63 -0
- package/knowledge/ui/proof/render-truth.vi.md +63 -0
- package/operators/INDEX.md +199 -0
- package/operators/INDEX.vi.md +199 -0
- package/operators/architecture-decide/errors.json +115 -0
- package/operators/architecture-decide/operator.json +20 -0
- package/operators/architecture-decide/operator.md +133 -0
- package/operators/architecture-decide/operator.vi.md +130 -0
- package/operators/architecture-decide/self-test.mjs +221 -0
- package/operators/architecture-decide/validate.mjs +112 -0
- package/operators/backend-source-apply/errors.json +66 -0
- package/operators/backend-source-apply/operator.json +20 -0
- package/operators/backend-source-apply/operator.md +189 -0
- package/operators/backend-source-apply/operator.vi.md +185 -0
- package/operators/backend-source-apply/self-test.mjs +257 -0
- package/operators/backend-source-apply/validate.mjs +240 -0
- package/operators/business-decide/errors.json +78 -0
- package/operators/business-decide/operator.json +20 -0
- package/operators/business-decide/operator.md +176 -0
- package/operators/business-decide/operator.vi.md +174 -0
- package/operators/business-decide/self-test.mjs +225 -0
- package/operators/business-decide/validate.mjs +277 -0
- package/operators/content-generate/errors.json +106 -0
- package/operators/content-generate/operator.json +21 -0
- package/operators/content-generate/operator.md +155 -0
- package/operators/content-generate/operator.vi.md +155 -0
- package/operators/content-generate/self-test.mjs +288 -0
- package/operators/content-generate/validate.mjs +196 -0
- package/operators/errors.json +178 -0
- package/operators/frontend-direction-decide/errors.json +135 -0
- package/operators/frontend-direction-decide/operator.json +21 -0
- package/operators/frontend-direction-decide/operator.md +167 -0
- package/operators/frontend-direction-decide/operator.vi.md +167 -0
- package/operators/frontend-direction-decide/self-test.mjs +226 -0
- package/operators/frontend-direction-decide/validate.mjs +146 -0
- package/operators/frontend-presentation-resolve/errors.json +42 -0
- package/operators/frontend-presentation-resolve/operator.json +19 -0
- package/operators/frontend-presentation-resolve/operator.md +142 -0
- package/operators/frontend-presentation-resolve/operator.vi.md +140 -0
- package/operators/frontend-presentation-resolve/self-test.mjs +163 -0
- package/operators/frontend-presentation-resolve/validate.mjs +143 -0
- package/operators/frontend-source-apply/errors.json +30 -0
- package/operators/frontend-source-apply/operator.json +20 -0
- package/operators/frontend-source-apply/operator.md +127 -0
- package/operators/frontend-source-apply/operator.vi.md +126 -0
- package/operators/frontend-source-apply/self-test.mjs +214 -0
- package/operators/frontend-source-apply/validate.mjs +133 -0
- package/operators/frontend-surface-audit/errors.json +5 -0
- package/operators/frontend-surface-audit/operator.json +22 -0
- package/operators/frontend-surface-audit/operator.md +121 -0
- package/operators/frontend-surface-audit/operator.vi.md +121 -0
- package/operators/frontend-surface-audit/self-test.mjs +185 -0
- package/operators/frontend-surface-audit/validate.mjs +127 -0
- package/operators/git-publish/errors.json +54 -0
- package/operators/git-publish/operator.json +20 -0
- package/operators/git-publish/operator.md +180 -0
- package/operators/git-publish/operator.vi.md +178 -0
- package/operators/git-publish/self-test.mjs +177 -0
- package/operators/git-publish/validate.mjs +106 -0
- package/operators/platform-operate/errors.json +90 -0
- package/operators/platform-operate/operator.json +22 -0
- package/operators/platform-operate/operator.md +162 -0
- package/operators/platform-operate/operator.vi.md +160 -0
- package/operators/platform-operate/self-test.mjs +202 -0
- package/operators/platform-operate/validate.mjs +193 -0
- package/operators/quality-verify/errors.json +54 -0
- package/operators/quality-verify/operator.json +20 -0
- package/operators/quality-verify/operator.md +185 -0
- package/operators/quality-verify/operator.vi.md +177 -0
- package/operators/quality-verify/self-test.mjs +210 -0
- package/operators/quality-verify/validate.mjs +197 -0
- package/operators/release-deploy/errors.json +158 -0
- package/operators/release-deploy/operator.json +23 -0
- package/operators/release-deploy/operator.md +183 -0
- package/operators/release-deploy/operator.vi.md +181 -0
- package/operators/release-deploy/self-test.mjs +235 -0
- package/operators/release-deploy/validate.mjs +129 -0
- package/operators/uat-verify/errors.json +78 -0
- package/operators/uat-verify/operator.json +25 -0
- package/operators/uat-verify/operator.md +162 -0
- package/operators/uat-verify/operator.vi.md +161 -0
- package/operators/uat-verify/self-test.mjs +270 -0
- package/operators/uat-verify/validate.mjs +202 -0
- package/operators/workspace-bind/errors.json +90 -0
- package/operators/workspace-bind/operator.json +21 -0
- package/operators/workspace-bind/operator.md +148 -0
- package/operators/workspace-bind/operator.vi.md +148 -0
- package/operators/workspace-bind/self-test.mjs +205 -0
- package/operators/workspace-bind/validate.mjs +152 -0
- package/package.json +50 -0
- package/readiness/initialization/workspaces/commit-policy.json +91 -0
- package/readiness/initialization/workspaces/config.schema.json +35 -0
- package/readiness/initialization/workspaces/device-state.schema.json +54 -0
- package/readiness/initialization/workspaces/local-route.schema.json +206 -0
- package/readiness/initialization/workspaces/portable-route.schema.json +200 -0
- package/resources/INDEX.md +96 -0
- package/resources/INDEX.vi.md +99 -0
- package/resources/agents/profiles/claude.json +131 -0
- package/resources/agents/profiles/openai.json +131 -0
- package/resources/orchestrator.json +71 -0
- package/resources/tools.json +85 -0
- package/routing.json +272 -0
- package/scripts/alias-registry.mjs +31 -0
- package/scripts/device-state.mjs +497 -0
- package/scripts/device-state.spec.mjs +18 -0
- package/scripts/errors-registry.mjs +68 -0
- package/scripts/generate-alias-doc.mjs +66 -0
- package/scripts/generate-grammar-dna.mjs +387 -0
- package/scripts/generate-operators-index.mjs +95 -0
- package/scripts/generate-presentation-owned.mjs +681 -0
- package/scripts/install-cli.spec.mjs +74 -0
- package/scripts/json-schema.mjs +94 -0
- package/scripts/operator-md.mjs +96 -0
- package/scripts/run-operator-self-tests.mjs +36 -0
- package/scripts/validate-alias.mjs +165 -0
- package/scripts/validate-defaults.mjs +72 -0
- package/scripts/validate-knowledge-citations.mjs +90 -0
- package/scripts/validate-operator.mjs +125 -0
- package/scripts/validate-request.mjs +80 -0
- package/scripts/validate-resources.mjs +117 -0
- package/scripts/validate-response.mjs +141 -0
- package/scripts/validate-routing.mjs +91 -0
- package/scripts/validate-step.mjs +50 -0
- package/scripts/validate-templates.mjs +226 -0
- package/scripts/validate-templates.spec.mjs +144 -0
- package/scripts/validate-workflows.mjs +106 -0
- package/scripts/workspace-portable.mjs +389 -0
- package/scripts/workspace-portable.spec.mjs +246 -0
- package/templates/README.md +47 -0
- package/templates/README.vi.md +45 -0
- package/templates/changes.example.md +27 -0
- package/templates/grammars.template.md +34 -0
- package/templates/kinds/architecture-decision.contract.json +14 -0
- package/templates/kinds/architecture-decision.skeleton.md +52 -0
- package/templates/kinds/backend-source-application.contract.json +10 -0
- package/templates/kinds/backend-source-application.skeleton.md +34 -0
- package/templates/kinds/business-promise-authority.contract.json +13 -0
- package/templates/kinds/business-promise-authority.skeleton.md +67 -0
- package/templates/kinds/capture.schema.json +33 -0
- package/templates/kinds/changes.contract.json +10 -0
- package/templates/kinds/changes.skeleton.md +26 -0
- package/templates/kinds/checks.schema.json +44 -0
- package/templates/kinds/claims.schema.json +165 -0
- package/templates/kinds/conformance.schema.json +15 -0
- package/templates/kinds/content-brief.contract.json +12 -0
- package/templates/kinds/content-brief.skeleton.md +45 -0
- package/templates/kinds/content-generation-receipt.contract.json +11 -0
- package/templates/kinds/content-generation-receipt.skeleton.md +40 -0
- package/templates/kinds/content-review.contract.json +11 -0
- package/templates/kinds/content-review.skeleton.md +45 -0
- package/templates/kinds/contract.schema.json +28 -0
- package/templates/kinds/coverage-matrix.schema.json +86 -0
- package/templates/kinds/coverage.schema.json +62 -0
- package/templates/kinds/current-state.schema.json +40 -0
- package/templates/kinds/delta.schema.json +95 -0
- package/templates/kinds/e2e.schema.json +63 -0
- package/templates/kinds/frontend-direction-decision.contract.json +93 -0
- package/templates/kinds/frontend-direction-decision.skeleton.md +68 -0
- package/templates/kinds/frontend-presentation-resolution.contract.json +11 -0
- package/templates/kinds/frontend-presentation-resolution.skeleton.md +32 -0
- package/templates/kinds/frontend-source-application.contract.json +10 -0
- package/templates/kinds/frontend-source-application.skeleton.md +30 -0
- package/templates/kinds/frontend-surface-audit.contract.json +52 -0
- package/templates/kinds/frontend-surface-audit.skeleton.md +32 -0
- package/templates/kinds/gate-result.schema.json +64 -0
- package/templates/kinds/git-publication.contract.json +82 -0
- package/templates/kinds/git-publication.skeleton.md +61 -0
- package/templates/kinds/independent-critique.contract.json +9 -0
- package/templates/kinds/independent-critique.skeleton.md +28 -0
- package/templates/kinds/inventory.schema.json +35 -0
- package/templates/kinds/model.schema.json +99 -0
- package/templates/kinds/mutations.schema.json +65 -0
- package/templates/kinds/platform-operation-receipt.contract.json +76 -0
- package/templates/kinds/platform-operation-receipt.skeleton.md +54 -0
- package/templates/kinds/probes.schema.json +130 -0
- package/templates/kinds/proof.schema.json +17 -0
- package/templates/kinds/quality-verification.contract.json +87 -0
- package/templates/kinds/quality-verification.skeleton.md +58 -0
- package/templates/kinds/release-deployment.contract.json +85 -0
- package/templates/kinds/release-deployment.skeleton.md +67 -0
- package/templates/kinds/route.schema.json +293 -0
- package/templates/kinds/stack-model.schema.json +90 -0
- package/templates/kinds/uat-capture.schema.json +35 -0
- package/templates/kinds/uat-flow-verification.contract.json +11 -0
- package/templates/kinds/uat-flow-verification.skeleton.md +47 -0
- package/templates/kinds/uat-snapshot.schema.json +96 -0
- package/templates/kinds/uat-verdicts.schema.json +41 -0
- package/templates/kinds/ui-coverage.schema.json +77 -0
- package/templates/kinds/verdicts.schema.json +39 -0
- package/templates/kinds/workspace-route-binding.contract.json +12 -0
- package/templates/kinds/workspace-route-binding.skeleton.md +60 -0
- package/templates/kinds/writes.schema.json +37 -0
- package/templates/operator.template.md +73 -0
- package/templates/patterns.template.md +31 -0
- package/templates/step/request.schema.json +42 -0
- package/templates/step/response.schema.json +144 -0
- package/templates/ui-composition.template.md +36 -0
- package/templates/ui-presentation.template.md +57 -0
- package/templates/ui-proof.template.md +34 -0
- package/workflows/README.md +37 -0
- package/workflows/README.vi.md +37 -0
- package/workflows/backend-feature.json +59 -0
- package/workflows/content-unit.json +19 -0
- package/workflows/frontend-new-surface.json +81 -0
- package/workflows/frontend-reconstruct.json +67 -0
- package/workflows/frontend-refine.json +67 -0
- package/workflows/frontend-with-uat.json +78 -0
- package/workflows/full-feature.json +104 -0
- package/workflows/release.json +29 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "kind:conformance",
|
|
3
|
+
"title": "One measured verdict for one declared facet of one operation; the file is named <operationId>.<facet>.json so silence about a facet is a missing file rather than a missing sentence.",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"additionalProperties": false,
|
|
6
|
+
"required": ["operationId", "facet", "verdict", "evidenceRef", "statement", "contractFingerprint"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"operationId": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
|
|
9
|
+
"facet": { "enum": ["transport", "writer", "store", "transaction", "idempotency", "migration", "exception-identity", "authorization", "concurrency"] },
|
|
10
|
+
"verdict": { "enum": ["conforms", "widened", "narrowed"] },
|
|
11
|
+
"evidenceRef": { "type": "string", "minLength": 1, "maxLength": 1024 },
|
|
12
|
+
"statement": { "type": "string", "minLength": 1, "maxLength": 4096 },
|
|
13
|
+
"contractFingerprint": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" }
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "content-brief",
|
|
3
|
+
"title": "^# content-brief — [a-z0-9][a-z0-9-]*$",
|
|
4
|
+
"sections": [
|
|
5
|
+
{ "heading": "^## Binding$", "table": "| Field | Value |", "rows": ["Unit", "Objective", "Audience", "Fingerprint"], "cell": { "Value": "\\S" } },
|
|
6
|
+
{ "heading": "^## Learner inputs$", "table": "| Input | Statement |", "cell": { "Statement": "\\S" } },
|
|
7
|
+
{ "heading": "^## Outcomes$", "table": "| Outcome | Statement |", "minRows": 1, "cell": { "Outcome": "^`[a-z0-9][a-z0-9-]*`$", "Statement": "\\S" } },
|
|
8
|
+
{ "heading": "^## Claims$", "table": "| Claim | Statement |", "minRows": 1, "cell": { "Claim": "^`[a-z0-9][a-z0-9-]*`$", "Statement": "\\S" } },
|
|
9
|
+
{ "heading": "^## Examples$", "table": "| Example | Statement |", "cell": { "Statement": "\\S" } },
|
|
10
|
+
{ "heading": "^## Dispositions$", "table": "| Kind | Target | Statement |", "cell": { "Kind": "^(add|change|remove)$", "Statement": "\\S" } }
|
|
11
|
+
]
|
|
12
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# content-brief — unit-id
|
|
2
|
+
|
|
3
|
+
One paragraph: what this unit teaches and to whom. Written by `content.generate` as
|
|
4
|
+
`response/brief.md` in one fresh execution before anything else exists, then fingerprinted. Every
|
|
5
|
+
edition, image, and track after it is measured against this page, and nothing downstream may add an
|
|
6
|
+
outcome or a claim it does not publish.
|
|
7
|
+
|
|
8
|
+
## Binding
|
|
9
|
+
|
|
10
|
+
| Field | Value |
|
|
11
|
+
| --- | --- |
|
|
12
|
+
| Unit | `unit-id` |
|
|
13
|
+
| Objective | the curriculum objective this unit serves |
|
|
14
|
+
| Audience | the learner the course already guarantees the prerequisites for |
|
|
15
|
+
| Fingerprint | `sha256:0000000000000000000000000000000000000000000000000000000000000000` |
|
|
16
|
+
|
|
17
|
+
## Learner inputs
|
|
18
|
+
|
|
19
|
+
| Input | Statement |
|
|
20
|
+
| --- | --- |
|
|
21
|
+
| prerequisite | what the learner already knows when the unit starts |
|
|
22
|
+
|
|
23
|
+
## Outcomes
|
|
24
|
+
|
|
25
|
+
| Outcome | Statement |
|
|
26
|
+
| --- | --- |
|
|
27
|
+
| `outcome-id` | what the learner can observably do afterwards |
|
|
28
|
+
|
|
29
|
+
## Claims
|
|
30
|
+
|
|
31
|
+
| Claim | Statement |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| `claim-id` | the statement a visual is allowed to encode |
|
|
34
|
+
|
|
35
|
+
## Examples
|
|
36
|
+
|
|
37
|
+
| Example | Statement |
|
|
38
|
+
| --- | --- |
|
|
39
|
+
| worked-example | the example the editions may use |
|
|
40
|
+
|
|
41
|
+
## Dispositions
|
|
42
|
+
|
|
43
|
+
| Kind | Target | Statement |
|
|
44
|
+
| --- | --- | --- |
|
|
45
|
+
| add | — | what this unit adds; a change or remove names what it acts on |
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "content-generation-receipt",
|
|
3
|
+
"title": "^# content-generation-receipt — [a-z0-9][a-z0-9-]*$",
|
|
4
|
+
"sections": [
|
|
5
|
+
{ "heading": "^## Binding$", "table": "| Field | Value |", "rows": ["Unit", "Brief fingerprint", "Verdict", "Round", "Source head"], "cell": { "Value": "\\S" } },
|
|
6
|
+
{ "heading": "^## Editions$", "table": "| Language | Article | Outcomes covered |", "minRows": 1, "cell": { "Language": "^[a-z]{2}(?:-[A-Z]{2})?$", "Article": "\\S", "Outcomes covered": "\\S" } },
|
|
7
|
+
{ "heading": "^## Approved artifacts$", "table": "| Artifact | Stage |", "cell": { "Artifact": "\\S", "Stage": "^(brief|write|image|code|e2e|review)$" } },
|
|
8
|
+
{ "heading": "^## Findings$", "table": "| Code | Stage | Ref | Statement |", "cell": { "Code": "^`(STAGE_DISABLED|DISPOSITION_APPLIED|REVISION_REQUIRED|PRODUCER_RATIONALE_WITHHELD)`$", "Stage": "^(brief|write|image|code|e2e|review)$", "Statement": "\\S" } },
|
|
9
|
+
{ "heading": "^## Fallbacks taken$", "table": "| Code | Action |", "cell": { "Code": "^`[A-Z][A-Z0-9_]*`$", "Action": "\\S" } }
|
|
10
|
+
]
|
|
11
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# content-generation-receipt — unit-id
|
|
2
|
+
|
|
3
|
+
One paragraph: which unit was built, against which frozen brief, and what the independent critique
|
|
4
|
+
concluded. Written by `content.generate` as `response/response.md`; the machine record of the
|
|
5
|
+
editions, the image, the tracks, and the executable check lives beside it in
|
|
6
|
+
`response/data/production.json`.
|
|
7
|
+
|
|
8
|
+
## Binding
|
|
9
|
+
|
|
10
|
+
| Field | Value |
|
|
11
|
+
| --- | --- |
|
|
12
|
+
| Unit | `unit-id` |
|
|
13
|
+
| Brief fingerprint | `sha256:0000000000000000000000000000000000000000000000000000000000000000` |
|
|
14
|
+
| Verdict | approved |
|
|
15
|
+
| Round | 1 |
|
|
16
|
+
| Source head | `0000000000000000000000000000000000000000` |
|
|
17
|
+
|
|
18
|
+
## Editions
|
|
19
|
+
|
|
20
|
+
| Language | Article | Outcomes covered |
|
|
21
|
+
| --- | --- | --- |
|
|
22
|
+
| vi | `response/artifacts/article.vi.md` | `outcome-id` |
|
|
23
|
+
|
|
24
|
+
## Approved artifacts
|
|
25
|
+
|
|
26
|
+
| Artifact | Stage |
|
|
27
|
+
| --- | --- |
|
|
28
|
+
| `response/artifacts/article.vi.md` | write |
|
|
29
|
+
|
|
30
|
+
## Findings
|
|
31
|
+
|
|
32
|
+
| Code | Stage | Ref | Statement |
|
|
33
|
+
| --- | --- | --- | --- |
|
|
34
|
+
| `STAGE_DISABLED` | image | — | the image stage was disabled for this unit |
|
|
35
|
+
|
|
36
|
+
## Fallbacks taken
|
|
37
|
+
|
|
38
|
+
| Code | Action |
|
|
39
|
+
| --- | --- |
|
|
40
|
+
| `REVIEW_REVISION_REQUIRED` | the artifacts the review named were revised and the review exchange was reopened |
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "content-review",
|
|
3
|
+
"title": "^# content-review — [a-z0-9][a-z0-9-]*$",
|
|
4
|
+
"sections": [
|
|
5
|
+
{ "heading": "^## Execution$", "table": "| Field | Value |", "rows": ["Reviewer execution", "Inherited turns", "Producer rationale", "Round"], "cell": { "Value": "\\S" } },
|
|
6
|
+
{ "heading": "^## Received$", "table": "| Artifact | Kind |", "minRows": 1, "cell": { "Artifact": "\\S", "Kind": "^(brief|article|image|prompt|track|assertions)$" } },
|
|
7
|
+
{ "heading": "^## Scores$", "table": "| Dimension | Score |", "exactRows": 7, "cell": { "Dimension": "^(correctness|pedagogy|interview-value|language|visual-fidelity|code-quality|e2e-proof)$", "Score": "^([0-9]{1,2}|100|—)$" } },
|
|
8
|
+
{ "heading": "^## Findings$", "table": "| Owning stage | Severity | Statement | Evidence |", "cell": { "Owning stage": "^(brief|write|image|code|e2e|critique)$", "Severity": "^(error|improvement)$", "Evidence": "\\S" } },
|
|
9
|
+
{ "heading": "^## Verdict$", "table": "| Field | Value |", "rows": ["Verdict"], "cell": { "Value": "\\S" } }
|
|
10
|
+
]
|
|
11
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# content-review — unit-id
|
|
2
|
+
|
|
3
|
+
One paragraph: what the reviewer read and what it concluded. Written by the nested `review`
|
|
4
|
+
exchange of `content.generate` as `review/response/review.md`, by a fresh execution that inherits
|
|
5
|
+
no turns, never produced any of the artifacts, and received them without the producer's rationale.
|
|
6
|
+
|
|
7
|
+
## Execution
|
|
8
|
+
|
|
9
|
+
| Field | Value |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| Reviewer execution | `exec://critique-0000` |
|
|
12
|
+
| Inherited turns | none |
|
|
13
|
+
| Producer rationale | withheld |
|
|
14
|
+
| Round | 1 |
|
|
15
|
+
|
|
16
|
+
## Received
|
|
17
|
+
|
|
18
|
+
| Artifact | Kind |
|
|
19
|
+
| --- | --- |
|
|
20
|
+
| `response/brief.md` | brief |
|
|
21
|
+
| `response/artifacts/article.vi.md` | article |
|
|
22
|
+
|
|
23
|
+
## Scores
|
|
24
|
+
|
|
25
|
+
| Dimension | Score |
|
|
26
|
+
| --- | --- |
|
|
27
|
+
| correctness | 90 |
|
|
28
|
+
| pedagogy | 88 |
|
|
29
|
+
| interview-value | 86 |
|
|
30
|
+
| language | 92 |
|
|
31
|
+
| visual-fidelity | — |
|
|
32
|
+
| code-quality | — |
|
|
33
|
+
| e2e-proof | — |
|
|
34
|
+
|
|
35
|
+
## Findings
|
|
36
|
+
|
|
37
|
+
| Owning stage | Severity | Statement | Evidence |
|
|
38
|
+
| --- | --- | --- | --- |
|
|
39
|
+
| write | improvement | what could be better, owned by exactly one stage that ran | `response/artifacts/article.vi.md:40` |
|
|
40
|
+
|
|
41
|
+
## Verdict
|
|
42
|
+
|
|
43
|
+
| Field | Value |
|
|
44
|
+
| --- | --- |
|
|
45
|
+
| Verdict | approved |
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "kinds:contract",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"required": ["kind", "title", "sections"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"kind": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
|
|
8
|
+
"example": { "type": "string", "pattern": "^templates/[A-Za-z0-9_./-]+\\.md$" },
|
|
9
|
+
"title": { "type": "string", "minLength": 1 },
|
|
10
|
+
"sections": {
|
|
11
|
+
"type": "array",
|
|
12
|
+
"minItems": 1,
|
|
13
|
+
"items": {
|
|
14
|
+
"type": "object",
|
|
15
|
+
"additionalProperties": false,
|
|
16
|
+
"required": ["heading"],
|
|
17
|
+
"properties": {
|
|
18
|
+
"heading": { "type": "string", "pattern": "^\\^## " },
|
|
19
|
+
"table": { "type": "string", "pattern": "^\\| .+ \\|$" },
|
|
20
|
+
"minRows": { "type": "integer", "minimum": 0 },
|
|
21
|
+
"exactRows": { "type": "integer", "minimum": 0 },
|
|
22
|
+
"rows": { "type": "array", "items": { "type": "string", "minLength": 1 }, "uniqueItems": true },
|
|
23
|
+
"cell": { "type": "object", "additionalProperties": { "type": "string", "minLength": 1 } }
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "kind:coverage-matrix",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"required": ["featureId", "fingerprint", "dimensions", "discoveredConsumers", "discoveredLifecycleBranches", "rows"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"featureId": { "$ref": "#/$defs/identifier" },
|
|
8
|
+
"fingerprint": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
|
|
9
|
+
"dimensions": {
|
|
10
|
+
"type": "array",
|
|
11
|
+
"minItems": 1,
|
|
12
|
+
"maxItems": 64,
|
|
13
|
+
"uniqueItems": true,
|
|
14
|
+
"items": { "$ref": "#/$defs/coverageDimension" }
|
|
15
|
+
},
|
|
16
|
+
"discoveredConsumers": {
|
|
17
|
+
"type": "array",
|
|
18
|
+
"maxItems": 256,
|
|
19
|
+
"items": {
|
|
20
|
+
"type": "object",
|
|
21
|
+
"additionalProperties": false,
|
|
22
|
+
"required": ["consumerId", "dimension", "sourceRef"],
|
|
23
|
+
"properties": {
|
|
24
|
+
"consumerId": { "$ref": "#/$defs/identifier" },
|
|
25
|
+
"dimension": { "$ref": "#/$defs/coverageDimension" },
|
|
26
|
+
"sourceRef": { "type": "string", "minLength": 1 }
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"discoveredLifecycleBranches": {
|
|
31
|
+
"type": "array",
|
|
32
|
+
"maxItems": 32,
|
|
33
|
+
"uniqueItems": true,
|
|
34
|
+
"items": { "$ref": "#/$defs/coverageDimension" }
|
|
35
|
+
},
|
|
36
|
+
"rows": {
|
|
37
|
+
"type": "array",
|
|
38
|
+
"minItems": 1,
|
|
39
|
+
"maxItems": 64,
|
|
40
|
+
"items": { "$ref": "#/$defs/coverageRow" }
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"$defs": {
|
|
44
|
+
"identifier": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
|
|
45
|
+
"nullableRef": {
|
|
46
|
+
"oneOf": [{ "type": "string", "minLength": 1, "maxLength": 1024 }, { "type": "null" }]
|
|
47
|
+
},
|
|
48
|
+
"identifierArray": {
|
|
49
|
+
"type": "array",
|
|
50
|
+
"maxItems": 256,
|
|
51
|
+
"uniqueItems": true,
|
|
52
|
+
"items": { "$ref": "#/$defs/identifier" }
|
|
53
|
+
},
|
|
54
|
+
"coverageDimension": { "$ref": "#/$defs/identifier" },
|
|
55
|
+
"coverageRow": {
|
|
56
|
+
"type": "object",
|
|
57
|
+
"additionalProperties": false,
|
|
58
|
+
"required": [
|
|
59
|
+
"dimension",
|
|
60
|
+
"disposition",
|
|
61
|
+
"statement",
|
|
62
|
+
"enforcementOwner",
|
|
63
|
+
"sourceRef",
|
|
64
|
+
"positiveProofRef",
|
|
65
|
+
"negativeProofRef",
|
|
66
|
+
"deferralRef",
|
|
67
|
+
"consumerIds",
|
|
68
|
+
"claimIds"
|
|
69
|
+
],
|
|
70
|
+
"properties": {
|
|
71
|
+
"dimension": { "$ref": "#/$defs/coverageDimension" },
|
|
72
|
+
"disposition": { "enum": ["preserve", "replace", "retire", "defer", "not-applicable"] },
|
|
73
|
+
"statement": { "type": "string", "minLength": 1, "maxLength": 4096 },
|
|
74
|
+
"enforcementOwner": {
|
|
75
|
+
"oneOf": [{ "type": "string", "minLength": 1, "maxLength": 256 }, { "type": "null" }]
|
|
76
|
+
},
|
|
77
|
+
"sourceRef": { "$ref": "#/$defs/nullableRef" },
|
|
78
|
+
"positiveProofRef": { "$ref": "#/$defs/nullableRef" },
|
|
79
|
+
"negativeProofRef": { "$ref": "#/$defs/nullableRef" },
|
|
80
|
+
"deferralRef": { "$ref": "#/$defs/nullableRef" },
|
|
81
|
+
"consumerIds": { "$ref": "#/$defs/identifierArray" },
|
|
82
|
+
"claimIds": { "$ref": "#/$defs/identifierArray" }
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "kind:coverage",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"required": [
|
|
6
|
+
"statements",
|
|
7
|
+
"lines",
|
|
8
|
+
"functions",
|
|
9
|
+
"branches",
|
|
10
|
+
"thresholds",
|
|
11
|
+
"evidenceRef"
|
|
12
|
+
],
|
|
13
|
+
"properties": {
|
|
14
|
+
"statements": {
|
|
15
|
+
"$ref": "#/$defs/percentage"
|
|
16
|
+
},
|
|
17
|
+
"lines": {
|
|
18
|
+
"$ref": "#/$defs/percentage"
|
|
19
|
+
},
|
|
20
|
+
"functions": {
|
|
21
|
+
"$ref": "#/$defs/percentage"
|
|
22
|
+
},
|
|
23
|
+
"branches": {
|
|
24
|
+
"$ref": "#/$defs/percentage"
|
|
25
|
+
},
|
|
26
|
+
"thresholds": {
|
|
27
|
+
"type": "object",
|
|
28
|
+
"additionalProperties": false,
|
|
29
|
+
"required": [
|
|
30
|
+
"statements",
|
|
31
|
+
"lines",
|
|
32
|
+
"functions",
|
|
33
|
+
"branches"
|
|
34
|
+
],
|
|
35
|
+
"properties": {
|
|
36
|
+
"statements": {
|
|
37
|
+
"$ref": "#/$defs/percentage"
|
|
38
|
+
},
|
|
39
|
+
"lines": {
|
|
40
|
+
"$ref": "#/$defs/percentage"
|
|
41
|
+
},
|
|
42
|
+
"functions": {
|
|
43
|
+
"$ref": "#/$defs/percentage"
|
|
44
|
+
},
|
|
45
|
+
"branches": {
|
|
46
|
+
"$ref": "#/$defs/percentage"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"evidenceRef": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"minLength": 1
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"$defs": {
|
|
56
|
+
"percentage": {
|
|
57
|
+
"type": "number",
|
|
58
|
+
"minimum": 0,
|
|
59
|
+
"maximum": 100
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "kind:current-state",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"required": ["observedHead", "fingerprint", "components", "boundaries"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"observedHead": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
|
|
8
|
+
"fingerprint": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
|
|
9
|
+
"components": {
|
|
10
|
+
"type": "array",
|
|
11
|
+
"minItems": 1,
|
|
12
|
+
"items": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"additionalProperties": false,
|
|
15
|
+
"required": ["componentId", "layer", "name", "version", "evidence"],
|
|
16
|
+
"properties": {
|
|
17
|
+
"componentId": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
|
|
18
|
+
"layer": { "enum": ["runtime", "framework", "persistence", "communication", "build", "deployment", "operations"] },
|
|
19
|
+
"name": { "type": "string", "minLength": 1 },
|
|
20
|
+
"version": { "type": "string", "minLength": 1 },
|
|
21
|
+
"evidence": { "type": "string", "pattern": "^[^\\s]+(?::\\d+(?:-\\d+)?)?@[0-9a-f]{40}$" }
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"boundaries": {
|
|
26
|
+
"type": "array",
|
|
27
|
+
"items": {
|
|
28
|
+
"type": "object",
|
|
29
|
+
"additionalProperties": false,
|
|
30
|
+
"required": ["boundaryId", "responsibility", "stores", "evidence"],
|
|
31
|
+
"properties": {
|
|
32
|
+
"boundaryId": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
|
|
33
|
+
"responsibility": { "type": "string", "minLength": 1 },
|
|
34
|
+
"stores": { "type": "array", "items": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" }, "uniqueItems": true },
|
|
35
|
+
"evidence": { "type": "string", "pattern": "^[^\\s]+(?::\\d+(?:-\\d+)?)?@[0-9a-f]{40}$" }
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "kind:delta",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"required": [
|
|
6
|
+
"serviceRef", "serviceKind", "ownerRef", "approvalRef", "planSha256",
|
|
7
|
+
"inventoryFingerprint", "generation", "observedAt",
|
|
8
|
+
"inventoriedResources", "observedPortHolders", "portClaims",
|
|
9
|
+
"mutableResourceRefs", "observationOnlyResourceRefs",
|
|
10
|
+
"allowedEffects", "appliedEffects", "capabilities", "convergence", "mutations"
|
|
11
|
+
],
|
|
12
|
+
"properties": {
|
|
13
|
+
"serviceRef": { "type": "string", "minLength": 1 },
|
|
14
|
+
"serviceKind": { "$ref": "#/$defs/serviceKind" },
|
|
15
|
+
"ownerRef": { "type": "string", "minLength": 1 },
|
|
16
|
+
"approvalRef": { "type": "string", "minLength": 1 },
|
|
17
|
+
"planSha256": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
|
|
18
|
+
"inventoryFingerprint": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
|
|
19
|
+
"generation": { "type": "integer", "minimum": 0 },
|
|
20
|
+
"observedAt": { "type": "string", "format": "date-time" },
|
|
21
|
+
"inventoriedResources": {
|
|
22
|
+
"type": "array",
|
|
23
|
+
"minItems": 1,
|
|
24
|
+
"items": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"additionalProperties": false,
|
|
27
|
+
"required": ["resourceRef", "kind", "revision", "ownerRef"],
|
|
28
|
+
"properties": {
|
|
29
|
+
"resourceRef": { "type": "string", "minLength": 1 },
|
|
30
|
+
"kind": { "$ref": "#/$defs/serviceKind" },
|
|
31
|
+
"revision": { "type": "string", "minLength": 1 },
|
|
32
|
+
"ownerRef": { "type": "string", "minLength": 1 }
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"observedPortHolders": { "type": "array", "items": { "$ref": "#/$defs/portHolder" } },
|
|
37
|
+
"portClaims": {
|
|
38
|
+
"type": "array",
|
|
39
|
+
"items": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"additionalProperties": false,
|
|
42
|
+
"required": ["port", "resourceRef"],
|
|
43
|
+
"properties": {
|
|
44
|
+
"port": { "type": "integer", "minimum": 1, "maximum": 65535 },
|
|
45
|
+
"resourceRef": { "type": "string", "minLength": 1 }
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"mutableResourceRefs": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 } },
|
|
50
|
+
"observationOnlyResourceRefs": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
51
|
+
"allowedEffects": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/effect" } },
|
|
52
|
+
"appliedEffects": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/effect" } },
|
|
53
|
+
"capabilities": {
|
|
54
|
+
"type": "array",
|
|
55
|
+
"items": {
|
|
56
|
+
"type": "object",
|
|
57
|
+
"additionalProperties": false,
|
|
58
|
+
"required": ["capability", "custodyEvidenceRef"],
|
|
59
|
+
"properties": {
|
|
60
|
+
"capability": { "enum": ["metrics:remote-write", "sonar:project-admin", "tunnel:write", "dns:write"] },
|
|
61
|
+
"custodyEvidenceRef": { "type": "string", "minLength": 1 }
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"convergence": { "enum": ["converged", "already-converged"] },
|
|
66
|
+
"mutations": {
|
|
67
|
+
"type": "array",
|
|
68
|
+
"items": {
|
|
69
|
+
"type": "object",
|
|
70
|
+
"additionalProperties": false,
|
|
71
|
+
"required": ["effect", "resourceRef", "beforeRevision", "afterRevision"],
|
|
72
|
+
"properties": {
|
|
73
|
+
"effect": { "$ref": "#/$defs/effect" },
|
|
74
|
+
"resourceRef": { "type": "string", "minLength": 1 },
|
|
75
|
+
"beforeRevision": { "oneOf": [{ "type": "string", "minLength": 1 }, { "type": "null" }] },
|
|
76
|
+
"afterRevision": { "type": "string", "minLength": 1 }
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"$defs": {
|
|
82
|
+
"serviceKind": { "enum": ["observability", "sonar", "tunnel"] },
|
|
83
|
+
"effect": { "enum": ["update-config", "restart-service", "upsert-dashboard", "update-remote-write", "create-project", "assign-profile", "assign-gate", "enforce-setting", "create-tunnel", "update-tunnel-route", "upsert-proxied-dns"] },
|
|
84
|
+
"portHolder": {
|
|
85
|
+
"type": "object",
|
|
86
|
+
"additionalProperties": false,
|
|
87
|
+
"required": ["port", "holderRef", "evidenceRef"],
|
|
88
|
+
"properties": {
|
|
89
|
+
"port": { "type": "integer", "minimum": 1, "maximum": 65535 },
|
|
90
|
+
"holderRef": { "type": "string", "minLength": 1 },
|
|
91
|
+
"evidenceRef": { "type": "string", "minLength": 1 }
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "kind:e2e",
|
|
3
|
+
"title": "What the generated code did when it was actually built and run: one build record per track, one run record per executable check, and the contract fingerprint taken before and after the repair loop.",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"additionalProperties": false,
|
|
6
|
+
"required": ["unitId", "contractFingerprintBefore", "contractFingerprintAfter", "iterations", "maxIterations", "tracks", "runs"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"unitId": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
|
|
9
|
+
"contractFingerprintBefore": { "$ref": "#/$defs/fingerprint" },
|
|
10
|
+
"contractFingerprintAfter": { "$ref": "#/$defs/fingerprint" },
|
|
11
|
+
"iterations": { "type": "integer", "minimum": 1, "maximum": 20 },
|
|
12
|
+
"maxIterations": { "type": "integer", "minimum": 1, "maximum": 20 },
|
|
13
|
+
"tracks": {
|
|
14
|
+
"type": "array",
|
|
15
|
+
"minItems": 1,
|
|
16
|
+
"maxItems": 4,
|
|
17
|
+
"items": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"additionalProperties": false,
|
|
20
|
+
"required": ["language", "sourceRef", "buildCommand", "exitCode"],
|
|
21
|
+
"properties": {
|
|
22
|
+
"language": { "$ref": "#/$defs/implementationLanguage" },
|
|
23
|
+
"sourceRef": { "type": "string", "minLength": 1, "maxLength": 1024 },
|
|
24
|
+
"buildCommand": { "type": "string", "minLength": 1, "maxLength": 1024 },
|
|
25
|
+
"exitCode": { "type": "integer", "minimum": 0, "maximum": 255 }
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"runs": {
|
|
30
|
+
"type": "array",
|
|
31
|
+
"minItems": 1,
|
|
32
|
+
"maxItems": 4,
|
|
33
|
+
"items": {
|
|
34
|
+
"type": "object",
|
|
35
|
+
"additionalProperties": false,
|
|
36
|
+
"required": ["language", "command", "exitCode", "assertions"],
|
|
37
|
+
"properties": {
|
|
38
|
+
"language": { "$ref": "#/$defs/implementationLanguage" },
|
|
39
|
+
"command": { "type": "string", "minLength": 1, "maxLength": 1024 },
|
|
40
|
+
"exitCode": { "type": "integer", "minimum": 0, "maximum": 255 },
|
|
41
|
+
"assertions": {
|
|
42
|
+
"type": "array",
|
|
43
|
+
"minItems": 1,
|
|
44
|
+
"maxItems": 64,
|
|
45
|
+
"items": {
|
|
46
|
+
"type": "object",
|
|
47
|
+
"additionalProperties": false,
|
|
48
|
+
"required": ["name", "held"],
|
|
49
|
+
"properties": {
|
|
50
|
+
"name": { "type": "string", "minLength": 1, "maxLength": 256 },
|
|
51
|
+
"held": { "type": "boolean" }
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"$defs": {
|
|
60
|
+
"fingerprint": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
|
|
61
|
+
"implementationLanguage": { "type": "string", "pattern": "^[a-z][a-z0-9+#.-]*$" }
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "frontend-direction-decision",
|
|
3
|
+
"title": "^# frontend-direction-decision — [a-z0-9][a-z0-9-]*$",
|
|
4
|
+
"sections": [
|
|
5
|
+
{
|
|
6
|
+
"heading": "^## Decision$",
|
|
7
|
+
"table": "| Field | Value |",
|
|
8
|
+
"rows": [
|
|
9
|
+
"Direction id",
|
|
10
|
+
"Target",
|
|
11
|
+
"Intent",
|
|
12
|
+
"Change level",
|
|
13
|
+
"Owner ceiling",
|
|
14
|
+
"Classification",
|
|
15
|
+
"Selection policy",
|
|
16
|
+
"Selected candidate"
|
|
17
|
+
],
|
|
18
|
+
"cell": {
|
|
19
|
+
"Value": "\\S"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"heading": "^## Observed$",
|
|
24
|
+
"table": "| Item | Evidence |",
|
|
25
|
+
"minRows": 1,
|
|
26
|
+
"cell": {
|
|
27
|
+
"Evidence": "^`[^`]+@[0-9a-f]{7,40}`$"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"heading": "^## UI contract$",
|
|
32
|
+
"table": "| Element | Kind | Responsibility |",
|
|
33
|
+
"minRows": 1,
|
|
34
|
+
"cell": {
|
|
35
|
+
"Kind": "^(region|action|state|responsive|content|accessibility)$",
|
|
36
|
+
"Responsibility": "\\S"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"heading": "^## Coverage$",
|
|
41
|
+
"table": "| Concern | Enumerated |",
|
|
42
|
+
"rows": [
|
|
43
|
+
"Actions",
|
|
44
|
+
"Regions",
|
|
45
|
+
"States",
|
|
46
|
+
"Responsive"
|
|
47
|
+
],
|
|
48
|
+
"cell": {
|
|
49
|
+
"Enumerated": "\\S"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"heading": "^## References$",
|
|
54
|
+
"table": "| Source | URL | Limitation |",
|
|
55
|
+
"cell": {
|
|
56
|
+
"URL": "^https?://\\S+$",
|
|
57
|
+
"Limitation": "\\S"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"heading": "^## Images$",
|
|
62
|
+
"table": "| Slot | Why | Claim | File |",
|
|
63
|
+
"cell": {
|
|
64
|
+
"File": "^(`response/artifacts/images/[A-Za-z0-9_.-]+`|—)$"
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"heading": "^## Falsification$",
|
|
69
|
+
"table": "| Attack | Candidate | Verdict | Evidence |",
|
|
70
|
+
"minRows": 1,
|
|
71
|
+
"cell": {
|
|
72
|
+
"Candidate": "^`[a-z0-9][a-z0-9-]*`$",
|
|
73
|
+
"Verdict": "^(holds|fails)$",
|
|
74
|
+
"Evidence": "\\S"
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"heading": "^## Why not the others$",
|
|
79
|
+
"table": "| Candidate | Rejected because |",
|
|
80
|
+
"cell": {
|
|
81
|
+
"Candidate": "^`[a-z0-9][a-z0-9-]*`$",
|
|
82
|
+
"Rejected because": "\\S"
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"heading": "^## Fallbacks taken$",
|
|
87
|
+
"table": "| Code | Action |",
|
|
88
|
+
"cell": {
|
|
89
|
+
"Code": "^`[A-Z][A-Z0-9_]+`$"
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
}
|