@stravica-ai/digital-operator-pa 0.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/LICENSE +21 -0
- package/README.md +170 -0
- package/bin/desk +9 -0
- package/bin/distill +2 -0
- package/bin/estate-sync +2 -0
- package/bin/launch +2 -0
- package/bin/memory-sync +2 -0
- package/bin/migrate-inspect +2 -0
- package/bin/pa +2 -0
- package/bin/pa-coordinator-hook +2 -0
- package/bin/pa-init +2 -0
- package/bin/research +2 -0
- package/bin/scheduler +2 -0
- package/bin/secrets +2 -0
- package/bin/slice +2 -0
- package/bin/smoke +9 -0
- package/bin/sync +2 -0
- package/dist/engineering-pa-cli/README.md +205 -0
- package/dist/engineering-pa-cli/bin/estate-sync +2 -0
- package/dist/engineering-pa-cli/bin/launch +2 -0
- package/dist/engineering-pa-cli/bin/pa +2 -0
- package/dist/engineering-pa-cli/bin/pa-coordinator-hook +12 -0
- package/dist/engineering-pa-cli/bin/research +2 -0
- package/dist/engineering-pa-cli/bin/scheduler +2 -0
- package/dist/engineering-pa-cli/bin/secrets +2 -0
- package/dist/engineering-pa-cli/bin/smoke +9 -0
- package/dist/engineering-pa-cli/bin/sync +2 -0
- package/dist/engineering-pa-cli/config/coordinator-allowlist.json +118 -0
- package/dist/engineering-pa-cli/docs/coordinator-hook.md +211 -0
- package/dist/engineering-pa-cli/docs/estate-sync.md +412 -0
- package/dist/engineering-pa-cli/docs/gsc.md +175 -0
- package/dist/engineering-pa-cli/docs/lint-linkedin.md +139 -0
- package/dist/engineering-pa-cli/docs/secrets.md +221 -0
- package/dist/engineering-pa-cli/docs/smoke.md +113 -0
- package/dist/engineering-pa-cli/docs/staging-alias.md +114 -0
- package/dist/engineering-pa-cli/index.mjs +17 -0
- package/dist/engineering-pa-cli/package.json +37 -0
- package/dist/engineering-pa-cli/src/autonomy/cli.mjs +329 -0
- package/dist/engineering-pa-cli/src/autonomy/envelope.mjs +301 -0
- package/dist/engineering-pa-cli/src/coordinator-hook/cli.mjs +140 -0
- package/dist/engineering-pa-cli/src/coordinator-hook/config.mjs +134 -0
- package/dist/engineering-pa-cli/src/coordinator-hook/message.mjs +47 -0
- package/dist/engineering-pa-cli/src/coordinator-hook/policy.mjs +211 -0
- package/dist/engineering-pa-cli/src/coordinator-hook/repo-root.mjs +44 -0
- package/dist/engineering-pa-cli/src/coordinator-hook/self.mjs +30 -0
- package/dist/engineering-pa-cli/src/environment/cli.mjs +287 -0
- package/dist/engineering-pa-cli/src/environment/probes.mjs +302 -0
- package/dist/engineering-pa-cli/src/gsc/auth.mjs +148 -0
- package/dist/engineering-pa-cli/src/gsc/cli.mjs +93 -0
- package/dist/engineering-pa-cli/src/gsc/cloudflare.mjs +318 -0
- package/dist/engineering-pa-cli/src/gsc/commands/add-property.mjs +70 -0
- package/dist/engineering-pa-cli/src/gsc/commands/list-properties.mjs +33 -0
- package/dist/engineering-pa-cli/src/gsc/commands/pull-analytics.mjs +130 -0
- package/dist/engineering-pa-cli/src/gsc/commands/submit-sitemap.mjs +41 -0
- package/dist/engineering-pa-cli/src/gsc/commands/verify-via-cf-dns.mjs +189 -0
- package/dist/engineering-pa-cli/src/knowledge/call-log.mjs +59 -0
- package/dist/engineering-pa-cli/src/knowledge/cli.mjs +242 -0
- package/dist/engineering-pa-cli/src/knowledge/eval.mjs +446 -0
- package/dist/engineering-pa-cli/src/knowledge/formatters.mjs +331 -0
- package/dist/engineering-pa-cli/src/knowledge/graph.mjs +710 -0
- package/dist/engineering-pa-cli/src/launch/README.md +214 -0
- package/dist/engineering-pa-cli/src/launch/cli.mjs +51 -0
- package/dist/engineering-pa-cli/src/launch/commands/launch.mjs +106 -0
- package/dist/engineering-pa-cli/src/launch/identity.mjs +43 -0
- package/dist/engineering-pa-cli/src/launch/planner.mjs +44 -0
- package/dist/engineering-pa-cli/src/launch/repo-root.mjs +53 -0
- package/dist/engineering-pa-cli/src/launch/runner.mjs +147 -0
- package/dist/engineering-pa-cli/src/launch/task-loader.mjs +85 -0
- package/dist/engineering-pa-cli/src/lint/cli.mjs +61 -0
- package/dist/engineering-pa-cli/src/lint/commands/linkedin.mjs +133 -0
- package/dist/engineering-pa-cli/src/lint/detectors.mjs +90 -0
- package/dist/engineering-pa-cli/src/lint/linter.mjs +69 -0
- package/dist/engineering-pa-cli/src/lint/reporter.mjs +32 -0
- package/dist/engineering-pa-cli/src/lint/rules.mjs +132 -0
- package/dist/engineering-pa-cli/src/pa/cli.mjs +369 -0
- package/dist/engineering-pa-cli/src/pa/doc-groups.mjs +164 -0
- package/dist/engineering-pa-cli/src/pa/io.mjs +80 -0
- package/dist/engineering-pa-cli/src/pa/project-cli.mjs +385 -0
- package/dist/engineering-pa-cli/src/pa/projects.mjs +352 -0
- package/dist/engineering-pa-cli/src/pa/repo-root.mjs +64 -0
- package/dist/engineering-pa-cli/src/pa/session.mjs +254 -0
- package/dist/engineering-pa-cli/src/pa/work-cli.mjs +164 -0
- package/dist/engineering-pa-cli/src/pa/work.mjs +196 -0
- package/dist/engineering-pa-cli/src/pa/workstreams.mjs +201 -0
- package/dist/engineering-pa-cli/src/research/README.md +360 -0
- package/dist/engineering-pa-cli/src/research/briefs/extractor.md +103 -0
- package/dist/engineering-pa-cli/src/research/briefs/searcher.md +113 -0
- package/dist/engineering-pa-cli/src/research/briefs/synthesizer.md +124 -0
- package/dist/engineering-pa-cli/src/research/briefs/verifier.md +86 -0
- package/dist/engineering-pa-cli/src/research/cli.mjs +141 -0
- package/dist/engineering-pa-cli/src/research/commands/gates.mjs +176 -0
- package/dist/engineering-pa-cli/src/research/commands/list.mjs +56 -0
- package/dist/engineering-pa-cli/src/research/commands/mark.mjs +97 -0
- package/dist/engineering-pa-cli/src/research/commands/paths.mjs +69 -0
- package/dist/engineering-pa-cli/src/research/commands/prune.mjs +86 -0
- package/dist/engineering-pa-cli/src/research/commands/run.mjs +94 -0
- package/dist/engineering-pa-cli/src/research/commands/show.mjs +43 -0
- package/dist/engineering-pa-cli/src/research/docs/operator-present-flow.md +120 -0
- package/dist/engineering-pa-cli/src/research/format.mjs +59 -0
- package/dist/engineering-pa-cli/src/research/promote.mjs +260 -0
- package/dist/engineering-pa-cli/src/research/schema/finding.schema.json +55 -0
- package/dist/engineering-pa-cli/src/research/schema/gates.schema.json +34 -0
- package/dist/engineering-pa-cli/src/research/schema/manifest.schema.json +59 -0
- package/dist/engineering-pa-cli/src/research/schema/plan.schema.json +41 -0
- package/dist/engineering-pa-cli/src/research/schema/sources.schema.json +31 -0
- package/dist/engineering-pa-cli/src/research/store/findings.mjs +61 -0
- package/dist/engineering-pa-cli/src/research/store/gates.mjs +73 -0
- package/dist/engineering-pa-cli/src/research/store/index.mjs +312 -0
- package/dist/engineering-pa-cli/src/research/store/manifest.mjs +56 -0
- package/dist/engineering-pa-cli/src/research/store/plan.mjs +59 -0
- package/dist/engineering-pa-cli/src/research/store/sources.mjs +44 -0
- package/dist/engineering-pa-cli/src/research/store/validate.mjs +92 -0
- package/dist/engineering-pa-cli/src/research/workflows/research-normal.js +573 -0
- package/dist/engineering-pa-cli/src/scheduler/cli.mjs +197 -0
- package/dist/engineering-pa-cli/src/secrets/cli.mjs +254 -0
- package/dist/engineering-pa-cli/src/secrets/commands/backup-template.mjs +67 -0
- package/dist/engineering-pa-cli/src/secrets/commands/backup.mjs +85 -0
- package/dist/engineering-pa-cli/src/secrets/commands/delete.mjs +58 -0
- package/dist/engineering-pa-cli/src/secrets/commands/find.mjs +36 -0
- package/dist/engineering-pa-cli/src/secrets/commands/get.mjs +49 -0
- package/dist/engineering-pa-cli/src/secrets/commands/init.mjs +69 -0
- package/dist/engineering-pa-cli/src/secrets/commands/list.mjs +37 -0
- package/dist/engineering-pa-cli/src/secrets/commands/rotate.mjs +46 -0
- package/dist/engineering-pa-cli/src/secrets/commands/set.mjs +123 -0
- package/dist/engineering-pa-cli/src/secrets/commands/status.mjs +146 -0
- package/dist/engineering-pa-cli/src/secrets/commands/vaults.mjs +57 -0
- package/dist/engineering-pa-cli/src/secrets/commands/verify.mjs +143 -0
- package/dist/engineering-pa-cli/src/secrets/vault.mjs +766 -0
- package/dist/engineering-pa-cli/src/smoke/checks.mjs +199 -0
- package/dist/engineering-pa-cli/src/smoke/cli.mjs +108 -0
- package/dist/engineering-pa-cli/src/smoke/commands/run.mjs +237 -0
- package/dist/engineering-pa-cli/src/smoke/runner.mjs +191 -0
- package/dist/engineering-pa-cli/src/staging-alias/cli.mjs +91 -0
- package/dist/engineering-pa-cli/src/staging-alias/cloudflare.mjs +380 -0
- package/dist/engineering-pa-cli/src/staging-alias/commands/list.mjs +36 -0
- package/dist/engineering-pa-cli/src/staging-alias/commands/set.mjs +188 -0
- package/dist/engineering-pa-cli/src/staging-alias/commands/status.mjs +113 -0
- package/dist/engineering-pa-cli/src/staging-alias/commands/unset.mjs +95 -0
- package/dist/engineering-pa-cli/src/staging-alias/sites.mjs +105 -0
- package/dist/engineering-pa-cli/src/sync/cli.mjs +151 -0
- package/dist/engineering-pa-cli/src/sync/git.mjs +149 -0
- package/dist/engineering-pa-cli/src/sync/lock.mjs +30 -0
- package/dist/engineering-pa-cli/src/sync/regenerated-artifacts.mjs +114 -0
- package/dist/engineering-pa-cli/src/sync/registry-scope.mjs +260 -0
- package/dist/engineering-pa-cli/src/sync/run.mjs +531 -0
- package/dist/engineering-pa-cli/src/sync/runner.mjs +62 -0
- package/dist/engineering-pa-cli/src/sync/runs-digest.mjs +138 -0
- package/dist/engineering-pa-core/README.md +60 -0
- package/dist/engineering-pa-core/bin/desk +9 -0
- package/dist/engineering-pa-core/bin/distill +2 -0
- package/dist/engineering-pa-core/bin/memory-sync +2 -0
- package/dist/engineering-pa-core/bin/slice +2 -0
- package/dist/engineering-pa-core/docs/autonomy-envelope-tracker.md +111 -0
- package/dist/engineering-pa-core/docs/blueprints/README.md +45 -0
- package/dist/engineering-pa-core/docs/blueprints/docker-services/blueprint.md +168 -0
- package/dist/engineering-pa-core/docs/blueprints/git-identity/blueprint.md +116 -0
- package/dist/engineering-pa-core/docs/blueprints/ideas/custom-workspace-views.md +9 -0
- package/dist/engineering-pa-core/docs/blueprints/ideas/knowledge-domain-patterns.md +15 -0
- package/dist/engineering-pa-core/docs/blueprints/ideas/office-integration.md +11 -0
- package/dist/engineering-pa-core/docs/blueprints/ideas/team-scaling.md +9 -0
- package/dist/engineering-pa-core/docs/blueprints/ideas/work-personal-separation.md +9 -0
- package/dist/engineering-pa-core/docs/blueprints/scheduled-distillation/blueprint.md +129 -0
- package/dist/engineering-pa-core/docs/blueprints/tool-integration/blueprint.md +110 -0
- package/dist/engineering-pa-core/docs/commands/init.md +159 -0
- package/dist/engineering-pa-core/docs/commands/schedule.md +98 -0
- package/dist/engineering-pa-core/docs/commands/upgrade.md +67 -0
- package/dist/engineering-pa-core/docs/entity-location-map.md +93 -0
- package/dist/engineering-pa-core/docs/knowledge-scaffold.md +121 -0
- package/dist/engineering-pa-core/docs/lock.md +155 -0
- package/dist/engineering-pa-core/docs/memory-sync.md +28 -0
- package/dist/engineering-pa-core/docs/pa-operating-model.md +457 -0
- package/dist/engineering-pa-core/docs/scheduling.md +35 -0
- package/dist/engineering-pa-core/docs/standards/README.md +24 -0
- package/dist/engineering-pa-core/docs/standards/briefing-contract.md +161 -0
- package/dist/engineering-pa-core/docs/standards/tooling.md +240 -0
- package/dist/engineering-pa-core/docs/tools/distill.md +230 -0
- package/dist/engineering-pa-core/docs/tools/memory-sync.md +98 -0
- package/dist/engineering-pa-core/docs/tools/scheduler.md +243 -0
- package/dist/engineering-pa-core/docs/tools/slice.md +150 -0
- package/dist/engineering-pa-core/docs/upstream-issue-filing.md +88 -0
- package/dist/engineering-pa-core/docs/working-directory.md +29 -0
- package/dist/engineering-pa-core/docs/workspace-operations.md +46 -0
- package/dist/engineering-pa-core/index.mjs +21 -0
- package/dist/engineering-pa-core/knowledge/README.md +53 -0
- package/dist/engineering-pa-core/knowledge/canonical/.gitkeep +0 -0
- package/dist/engineering-pa-core/knowledge/content-voice/README.md +64 -0
- package/dist/engineering-pa-core/knowledge/content-voice/banned-ai-tells-baseline.md +133 -0
- package/dist/engineering-pa-core/knowledge/content-voice/banned-ai-tells-shape.md +58 -0
- package/dist/engineering-pa-core/knowledge/content-voice/banned-ai-tells-taxonomy.md +33 -0
- package/dist/engineering-pa-core/knowledge/content-voice/content-pipeline-routing.md +58 -0
- package/dist/engineering-pa-core/knowledge/content-voice/new-tell-capture-procedure.md +40 -0
- package/dist/engineering-pa-core/knowledge/content-voice/voice-guide-shape.md +43 -0
- package/dist/engineering-pa-core/knowledge/delegation-dispatch/README.md +34 -0
- package/dist/engineering-pa-core/knowledge/delegation-dispatch/briefing-contract.md +77 -0
- package/dist/engineering-pa-core/knowledge/delegation-dispatch/delegation-modes.md +84 -0
- package/dist/engineering-pa-core/knowledge/delegation-dispatch/dispatch-envelope.md +238 -0
- package/dist/engineering-pa-core/knowledge/delegation-dispatch/task-groups-and-orchestrators.md +62 -0
- package/dist/engineering-pa-core/knowledge/delegation-dispatch/team-improvement-loop.md +48 -0
- package/dist/engineering-pa-core/knowledge/delegation-dispatch/tool-development-policy.md +48 -0
- package/dist/engineering-pa-core/knowledge/engineering-discipline/README.md +33 -0
- package/dist/engineering-pa-core/knowledge/engineering-discipline/blast-radius-and-safety.md +50 -0
- package/dist/engineering-pa-core/knowledge/engineering-discipline/investigate-root-causes.md +48 -0
- package/dist/engineering-pa-core/knowledge/engineering-discipline/role-ladder.md +57 -0
- package/dist/engineering-pa-core/knowledge/engineering-discipline/verify-runtime-behaviour.md +53 -0
- package/dist/engineering-pa-core/knowledge/engineering-discipline/worktree-isolation.md +50 -0
- package/dist/engineering-pa-core/knowledge/knowledge-memory/README.md +33 -0
- package/dist/engineering-pa-core/knowledge/knowledge-memory/claude-md-hygiene.md +47 -0
- package/dist/engineering-pa-core/knowledge/knowledge-memory/journal-and-self-improvement.md +53 -0
- package/dist/engineering-pa-core/knowledge/knowledge-memory/knowledge-retrieval-discipline.md +62 -0
- package/dist/engineering-pa-core/knowledge/knowledge-memory/librarian-synthesis-mandate.md +56 -0
- package/dist/engineering-pa-core/knowledge/knowledge-memory/staging-and-observations.md +58 -0
- package/dist/engineering-pa-core/knowledge/operator-interface/README.md +32 -0
- package/dist/engineering-pa-core/knowledge/operator-interface/communication-style.md +33 -0
- package/dist/engineering-pa-core/knowledge/operator-interface/escalation-and-correction.md +45 -0
- package/dist/engineering-pa-core/knowledge/operator-interface/push-back-discipline.md +42 -0
- package/dist/engineering-pa-core/knowledge/operator-interface/session-boot-and-end.md +56 -0
- package/dist/engineering-pa-core/knowledge/platform-tooling/README.md +37 -0
- package/dist/engineering-pa-core/knowledge/platform-tooling/desk-cli-reference.md +52 -0
- package/dist/engineering-pa-core/knowledge/platform-tooling/environment-awareness.md +91 -0
- package/dist/engineering-pa-core/knowledge/platform-tooling/mcp-servers-catalogue.md +52 -0
- package/dist/engineering-pa-core/knowledge/platform-tooling/pa-cli-reference.md +55 -0
- package/dist/engineering-pa-core/knowledge/platform-tooling/scheduling-and-launchd.md +56 -0
- package/dist/engineering-pa-core/knowledge/platform-tooling/tool-discovery-discipline.md +49 -0
- package/dist/engineering-pa-core/knowledge/platform-tooling/working-directory-vs-project-root.md +43 -0
- package/dist/engineering-pa-core/knowledge/platform-tooling/workspace-server.md +51 -0
- package/dist/engineering-pa-core/knowledge/raw/.gitkeep +0 -0
- package/dist/engineering-pa-core/knowledge/scaffold/domains.json +5 -0
- package/dist/engineering-pa-core/knowledge/schema/.gitkeep +0 -0
- package/dist/engineering-pa-core/knowledge/work-management/README.md +33 -0
- package/dist/engineering-pa-core/knowledge/work-management/desk-cli.md +84 -0
- package/dist/engineering-pa-core/knowledge/work-management/progress-md.md +48 -0
- package/dist/engineering-pa-core/knowledge/work-management/projects.md +64 -0
- package/dist/engineering-pa-core/knowledge/work-management/spawn-log.md +48 -0
- package/dist/engineering-pa-core/knowledge/work-management/work-items.md +67 -0
- package/dist/engineering-pa-core/package.json +26 -0
- package/dist/engineering-pa-core/roles/agent-ops/definition.md +79 -0
- package/dist/engineering-pa-core/roles/dispatch-briefer/definition.md +195 -0
- package/dist/engineering-pa-core/roles/librarian/definition.md +176 -0
- package/dist/engineering-pa-core/roles/pa/definition.md +93 -0
- package/dist/engineering-pa-core/roles/system-admin/definition.md +106 -0
- package/dist/engineering-pa-core/roles/tool-developer/definition.md +116 -0
- package/dist/engineering-pa-core/roles/writer/definition.md +130 -0
- package/dist/engineering-pa-core/schema/autonomy-envelope.schema.json +61 -0
- package/dist/engineering-pa-core/schema/project.json +114 -0
- package/dist/engineering-pa-core/schema/schedule.json +63 -0
- package/dist/engineering-pa-core/schema/work-item.json +92 -0
- package/dist/engineering-pa-core/src/config/pa-package-name.mjs +30 -0
- package/dist/engineering-pa-core/src/desk/cli.mjs +95 -0
- package/dist/engineering-pa-core/src/desk/commands.mjs +398 -0
- package/dist/engineering-pa-core/src/desk/format.mjs +84 -0
- package/dist/engineering-pa-core/src/desk/repo.mjs +172 -0
- package/dist/engineering-pa-core/src/desk/team-scope.mjs +142 -0
- package/dist/engineering-pa-core/src/distill/cli.mjs +112 -0
- package/dist/engineering-pa-core/src/distill/prereqs.mjs +171 -0
- package/dist/engineering-pa-core/src/distill/prompt.mjs +74 -0
- package/dist/engineering-pa-core/src/distill/run.mjs +230 -0
- package/dist/engineering-pa-core/src/distill/runner.mjs +86 -0
- package/dist/engineering-pa-core/src/distill/staging.mjs +59 -0
- package/dist/engineering-pa-core/src/knowledge/retrieval/backlink-indexer.mjs +154 -0
- package/dist/engineering-pa-core/src/knowledge/retrieval/graph-builder.mjs +186 -0
- package/dist/engineering-pa-core/src/knowledge/retrieval/index-builder.mjs +225 -0
- package/dist/engineering-pa-core/src/knowledge/retrieval/query.mjs +263 -0
- package/dist/engineering-pa-core/src/lock/lock.mjs +202 -0
- package/dist/engineering-pa-core/src/memory-sync/cli-support.mjs +12 -0
- package/dist/engineering-pa-core/src/memory-sync/cli.mjs +56 -0
- package/dist/engineering-pa-core/src/memory-sync/commands/pull.mjs +44 -0
- package/dist/engineering-pa-core/src/memory-sync/commands/push.mjs +46 -0
- package/dist/engineering-pa-core/src/memory-sync/mirror.mjs +114 -0
- package/dist/engineering-pa-core/src/memory-sync/repo.mjs +65 -0
- package/dist/engineering-pa-core/src/scheduler/detect.mjs +111 -0
- package/dist/engineering-pa-core/src/scheduler/host.mjs +38 -0
- package/dist/engineering-pa-core/src/scheduler/index.mjs +13 -0
- package/dist/engineering-pa-core/src/scheduler/install.mjs +854 -0
- package/dist/engineering-pa-core/src/scheduler/list.mjs +168 -0
- package/dist/engineering-pa-core/src/scheduler/remove.mjs +176 -0
- package/dist/engineering-pa-core/src/scheduler/verify.mjs +435 -0
- package/dist/engineering-pa-core/src/session-boot/autonomy-injection.mjs +84 -0
- package/dist/engineering-pa-core/src/slice/cli.mjs +139 -0
- package/dist/engineering-pa-core/src/slice/inputs.mjs +174 -0
- package/dist/engineering-pa-core/src/slice/prompt.mjs +94 -0
- package/dist/engineering-pa-core/src/slice/prompts/dave-boot.md +91 -0
- package/dist/engineering-pa-core/src/slice/run.mjs +334 -0
- package/dist/engineering-pa-core-extensions-atlassian/README.md +31 -0
- package/dist/engineering-pa-core-extensions-atlassian/index.mjs +9 -0
- package/dist/engineering-pa-core-extensions-atlassian/package.json +19 -0
- package/dist/engineering-pa-core-extensions-n8n/README.md +29 -0
- package/dist/engineering-pa-core-extensions-n8n/index.mjs +8 -0
- package/dist/engineering-pa-core-extensions-n8n/package.json +19 -0
- package/dist/engineering-pa-librarian/README.md +38 -0
- package/dist/engineering-pa-librarian/index.mjs +12 -0
- package/dist/engineering-pa-librarian/package.json +19 -0
- package/dist/engineering-pa-migrate-inspect/README.md +131 -0
- package/dist/engineering-pa-migrate-inspect/bin/migrate-inspect +2 -0
- package/dist/engineering-pa-migrate-inspect/package.json +21 -0
- package/dist/engineering-pa-migrate-inspect/src/age-key-migrate.mjs +83 -0
- package/dist/engineering-pa-migrate-inspect/src/cli.mjs +97 -0
- package/dist/engineering-pa-migrate-inspect/src/inspector.mjs +237 -0
- package/dist/engineering-pa-migrate-inspect/src/platforms/linux.mjs +87 -0
- package/dist/engineering-pa-migrate-inspect/src/platforms/macos.mjs +105 -0
- package/dist/engineering-pa-migrate-inspect/src/runner.mjs +87 -0
- package/dist/engineering-pa-runbook/README.md +103 -0
- package/dist/engineering-pa-runbook/package.json +18 -0
- package/dist/engineering-pa-runbook/reference/dex-template.runbook.json +66 -0
- package/dist/engineering-pa-runbook/reference/hq-dave.runbook.json +69 -0
- package/dist/engineering-pa-runbook/reference/smarthome01.runbook.json +92 -0
- package/dist/engineering-pa-runbook/schema/inspection.schema.json +113 -0
- package/dist/engineering-pa-runbook/schema/runbook.schema.json +67 -0
- package/dist/engineering-pa-runbook/src/validator.mjs +167 -0
- package/dist/engineering-pa-scaffold/README.md +164 -0
- package/dist/engineering-pa-scaffold/bin/pa-init +2 -0
- package/dist/engineering-pa-scaffold/index.mjs +42 -0
- package/dist/engineering-pa-scaffold/package.json +22 -0
- package/dist/engineering-pa-scaffold/src/cli.mjs +115 -0
- package/dist/engineering-pa-scaffold/src/commands/init.mjs +169 -0
- package/dist/engineering-pa-scaffold/src/generator.mjs +354 -0
- package/dist/engineering-pa-scaffold/src/prompts.mjs +125 -0
- package/dist/engineering-pa-scaffold/src/runner.mjs +142 -0
- package/dist/engineering-pa-scaffold/templates/CLAUDE.md.template +196 -0
- package/dist/engineering-pa-scaffold/templates/operator-README.md.template +44 -0
- package/dist/engineering-pa-types-engineering/README.md +35 -0
- package/dist/engineering-pa-types-engineering/docs/commands/product-build.md +120 -0
- package/dist/engineering-pa-types-engineering/index.mjs +9 -0
- package/dist/engineering-pa-types-engineering/package.json +19 -0
- package/dist/engineering-pa-types-engineering/roles/product-engineer/definition.md +650 -0
- package/dist/engineering-pa-types-engineering/roles/product-engineer/templates/build-spec.md +82 -0
- package/dist/engineering-pa-types-engineering/roles/product-engineer/templates/preflight-checklist.md +158 -0
- package/dist/engineering-pa-types-engineering/roles/product-engineer/templates/worker-brief.md +130 -0
- package/dist/engineering-pa-workspace/README.md +197 -0
- package/dist/engineering-pa-workspace/app/assets/md.js +187 -0
- package/dist/engineering-pa-workspace/app/assets/modal.js +120 -0
- package/dist/engineering-pa-workspace/app/assets/theme.css +132 -0
- package/dist/engineering-pa-workspace/app/assets/theme.js +159 -0
- package/dist/engineering-pa-workspace/app/banner.js +320 -0
- package/dist/engineering-pa-workspace/app/delegations.html +345 -0
- package/dist/engineering-pa-workspace/app/home.html +1060 -0
- package/dist/engineering-pa-workspace/app/index.html +361 -0
- package/dist/engineering-pa-workspace/app/knowledge-map.html +163 -0
- package/dist/engineering-pa-workspace/app/knowledge.html +304 -0
- package/dist/engineering-pa-workspace/app/nav.json +75 -0
- package/dist/engineering-pa-workspace/app/notes.html +199 -0
- package/dist/engineering-pa-workspace/app/onboarding.html +592 -0
- package/dist/engineering-pa-workspace/app/profile.html +243 -0
- package/dist/engineering-pa-workspace/app/project-detail.html +432 -0
- package/dist/engineering-pa-workspace/app/projects.html +297 -0
- package/dist/engineering-pa-workspace/app/repos.html +598 -0
- package/dist/engineering-pa-workspace/app/schedules.html +486 -0
- package/dist/engineering-pa-workspace/app/secrets.html +164 -0
- package/dist/engineering-pa-workspace/app/staging.html +319 -0
- package/dist/engineering-pa-workspace/app/tasks.html +465 -0
- package/dist/engineering-pa-workspace/app/vendor/chart.umd.min.js +21 -0
- package/dist/engineering-pa-workspace/app/viewer.html +116 -0
- package/dist/engineering-pa-workspace/docs/DAEMON.md +104 -0
- package/dist/engineering-pa-workspace/docs/page-blueprint.md +286 -0
- package/dist/engineering-pa-workspace/docs/status-mon.md +168 -0
- package/dist/engineering-pa-workspace/index.mjs +12 -0
- package/dist/engineering-pa-workspace/nav.json.example +8 -0
- package/dist/engineering-pa-workspace/package.json +27 -0
- package/dist/engineering-pa-workspace/src/api.mjs +2086 -0
- package/dist/engineering-pa-workspace/src/install-daemon.mjs +573 -0
- package/dist/engineering-pa-workspace/src/nav.mjs +190 -0
- package/dist/engineering-pa-workspace/src/secrets-api.mjs +175 -0
- package/dist/engineering-pa-workspace/src/server.mjs +516 -0
- package/dist/engineering-pa-workspace/src/status-mon/poll.mjs +220 -0
- package/dist/engineering-pa-workspace/src/status-mon/poller.mjs +113 -0
- package/dist/engineering-pa-workspace/src/status-mon/run.mjs +133 -0
- package/dist/engineering-pa-workspace/src/supervisor.mjs +264 -0
- package/dist/engineering-pa-workspace/src/ws.mjs +633 -0
- package/index.mjs +60 -0
- package/package.json +58 -0
- package/templates/banned-ai-tells.md +102 -0
- package/templates/purpose.md +105 -0
- package/templates/voice-guide.md +98 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// @stravica-ai/engineering-pa-core — type-agnostic platform spine.
|
|
2
|
+
//
|
|
3
|
+
// Public surface re-exports the modules other packages and operator code
|
|
4
|
+
// import from. Internal-only modules stay accessible via their direct
|
|
5
|
+
// `@stravica-ai/engineering-pa-core/src/...` paths (used in tests).
|
|
6
|
+
|
|
7
|
+
export const name = './';
|
|
8
|
+
export const version = '0.1.1';
|
|
9
|
+
|
|
10
|
+
// Repo-root discovery — shared by every CLI / library that needs to locate
|
|
11
|
+
// the operator repo at runtime.
|
|
12
|
+
export { findRepoRoot, getRepoRoot, _resetRepoRoot } from './src/desk/repo.mjs';
|
|
13
|
+
|
|
14
|
+
// Per-resource process lock — consumed default-on by `pa launch`; public
|
|
15
|
+
// so direct-run tools (which bypass launch) can adopt the same protection.
|
|
16
|
+
// Docs: docs/lock.md.
|
|
17
|
+
export { acquireLock, DEFAULT_STALE_AFTER_MS } from './src/lock/lock.mjs';
|
|
18
|
+
|
|
19
|
+
// Distill prereqs / prompt — also useful as a library entry point.
|
|
20
|
+
export { resolvePrereqs, defaultRepoRoot as distillDefaultRepoRoot, BUNDLED_LIBRARIAN_DEF } from './src/distill/prereqs.mjs';
|
|
21
|
+
export { buildDistillPrompt, DISTILL_PROMPT, claudeArgs } from './src/distill/prompt.mjs';
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Knowledge subtree — `packages/core/knowledge/`
|
|
2
|
+
|
|
3
|
+
The knowledge layer sits inside `@stravica-ai/engineering-pa-core` and is the in-package home for the team-library shape adopted in [knowledge-system.md](https://github.com/Stravica/dave/blob/main/operator/knowledge/engineering/standards/knowledge-system.md).
|
|
4
|
+
|
|
5
|
+
## Layer separation
|
|
6
|
+
|
|
7
|
+
Three owner-distinct layers (Karpathy LLM Wiki):
|
|
8
|
+
|
|
9
|
+
- **`raw/`** — intake. PA-writable subfolders (`raw/{paName}/...`). Append-only observations, confirmations, retractions. The PA owns this surface; nothing else writes here.
|
|
10
|
+
- **`canonical/`** — wiki. Librarian-only write. Curated, deduplicated, conflict-annotated. This is what other agents retrieve from.
|
|
11
|
+
- **`schema/`** — librarian configuration. Per-team customisation of distillation rules, domain taxonomy, retrieval weights, half-lives, importance tiers.
|
|
12
|
+
|
|
13
|
+
The librarian is the sole writer to `canonical/`. PAs never bypass distillation.
|
|
14
|
+
|
|
15
|
+
## Status
|
|
16
|
+
|
|
17
|
+
**Skeleton — v0.1.0.** Directories exist as placeholders. v0.1.0 does NOT ship:
|
|
18
|
+
|
|
19
|
+
- a deployed librarian service (lands in Phase 3)
|
|
20
|
+
- a real `schema/librarian-config.json` (lands in Phase 3)
|
|
21
|
+
- seed canonical content (lands in Phase 3)
|
|
22
|
+
- per-PA `raw/{paName}/` subfolders (created per-onboarding by the scaffolder)
|
|
23
|
+
|
|
24
|
+
This README and the empty subtrees exist so that Phase 1 Task 4 (minimal-core port) has slots to drop ported content into, and so that the methodology document is reflected on disk from day one.
|
|
25
|
+
|
|
26
|
+
## Conflict handling, observation routing, retrieval, memory typing, recency, schema
|
|
27
|
+
|
|
28
|
+
These are all governed by [knowledge-system.md](https://github.com/Stravica/dave/blob/main/operator/knowledge/engineering/standards/knowledge-system.md). That document is the authoritative reference for every implementation choice in this subtree. The eight deferred operator decisions noted at the bottom of that document remain open.
|
|
29
|
+
|
|
30
|
+
## Layout
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
packages/core/knowledge/
|
|
34
|
+
README.md # this file
|
|
35
|
+
schema/ # librarian configuration (empty in v0.1.0)
|
|
36
|
+
raw/ # intake — append-only observations (empty in v0.1.0)
|
|
37
|
+
canonical/ # wiki — librarian-only writes (empty in v0.1.0)
|
|
38
|
+
|
|
39
|
+
# 7-bucket knowledge scaffolds (Wave B-3 A-series, 0.2.0):
|
|
40
|
+
operator-interface/ # Bucket 1 — session boot/end, communication, escalation
|
|
41
|
+
work-management/ # Bucket 2 — work items, projects, progress.md, spawn-log
|
|
42
|
+
delegation-dispatch/ # Bucket 3 — 8-section brief, dispatch envelope, modes
|
|
43
|
+
knowledge-memory/ # Bucket 4 — retrieval, staging, journal, Librarian
|
|
44
|
+
engineering-discipline/ # Bucket 5 — role ladder, git safety, worktree isolation
|
|
45
|
+
content-voice/ # Bucket 6 — banned-tells taxonomy, capture procedure
|
|
46
|
+
platform-tooling/ # Bucket 7 — pa, desk, environment, workspace, MCP
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Bucket knowledge scaffolds (Wave B-3 A-series, `0.2.0`)
|
|
50
|
+
|
|
51
|
+
The seven bucket directories under this tree are **structural scaffolds** every operator copies into `operator/knowledge/<bucket-slug>/` and populates. Each ships a `README.md` (scope statement + pointer to the CLAUDE.md bucket that references it) + canonical subdocs (`.md` files with HTML-comment headers explaining what belongs, plus `<!-- OPERATOR: populate -->` markers for operator content).
|
|
52
|
+
|
|
53
|
+
The scaffolds are the shape every operator inherits by copying; the shape is what makes cross-operator PA operating models mutually intelligible. Full detail: `packages/core/docs/pa-operating-model.md` § "The 7-bucket taxonomy".
|
|
File without changes
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# content-voice — bucket knowledge scaffold (core baseline + operator overlay)
|
|
2
|
+
|
|
3
|
+
**Bucket:** 6 of 7. Referenced from CLAUDE.md.template Bucket 6.
|
|
4
|
+
|
|
5
|
+
## What this bucket carries
|
|
6
|
+
|
|
7
|
+
Content that lands in the operator's voice, not generic AI-speak. Routing content through the right pipeline. Voice guides, banned AI-tells, capture procedure for new tells.
|
|
8
|
+
|
|
9
|
+
**Bucket 6 is UNIQUE among the seven — it splits between core baseline and operator overlay.** Core ships the taxonomy, the generic-across-operators bans, and the capture mechanism. Operators overlay their specific voice + specific tells on top.
|
|
10
|
+
|
|
11
|
+
## Scope — core baseline vs operator overlay
|
|
12
|
+
|
|
13
|
+
**Core baseline (this directory).**
|
|
14
|
+
|
|
15
|
+
- The **13-category taxonomy** of AI-tell categories. Every operator's banned-tells doc uses the same category shape.
|
|
16
|
+
- **Generic AI patterns every operator should ban** — em-dash filler, "In today's landscape", "delve into", "leverage", "let's unpack", "the truth is", forced-contrast "it's not X, it's Y" without a legitimate contrast, adjective-piling, rhetorical-question section headings, setup-colons, sentence-final "and that changes everything".
|
|
17
|
+
- **New-tell capture procedure** — the mechanism operators follow to add new tells via Librarian synthesis.
|
|
18
|
+
- **Content-pipeline routing** — route content through the right role (`writer` for prose, surface-specialised writers for constrained targets).
|
|
19
|
+
- **Voice-guide shape pointer** — cross-reference to the voice-guide.md template skeleton.
|
|
20
|
+
- **Banned-ai-tells shape pointer** — cross-reference to the banned-ai-tells.md template skeleton.
|
|
21
|
+
|
|
22
|
+
**Operator overlay** (`operator/knowledge/writing/`, or the operator's chosen path).
|
|
23
|
+
|
|
24
|
+
- The operator's specific voice content (`voice-guide.md`).
|
|
25
|
+
- The operator's specific banned tells layered on the baseline. Category 13 (operator-specific) is fully populated; categories 1-12 are extended with operator-specific entries on top of the baseline generic list.
|
|
26
|
+
- The specific writer pipeline (`writer` alone, or `writer` + surface specialisations like `linkedin-writer`).
|
|
27
|
+
- Surface-specific engagement / mission docs (out of Bucket 6 scope proper — content-publishing lives in operator overlay of Bucket 7 or a separate operator domain).
|
|
28
|
+
|
|
29
|
+
## Canonical entries in this scaffold
|
|
30
|
+
|
|
31
|
+
| File | Purpose |
|
|
32
|
+
|---|---|
|
|
33
|
+
| `banned-ai-tells-baseline.md` | The 13-category taxonomy + generic-across-operators banned patterns + capture procedure. |
|
|
34
|
+
| `banned-ai-tells-taxonomy.md` | The 13 category names + one-line descriptions each. Referenced by operator overlays. |
|
|
35
|
+
| `new-tell-capture-procedure.md` | The mechanism operators follow to capture new tells via Librarian synthesis. |
|
|
36
|
+
| `content-pipeline-routing.md` | Route content through the right pipeline; content-publishing extensions are operator-side. |
|
|
37
|
+
| `voice-guide-shape.md` | Pointer at `@stravica-ai/digital-operator-pa/templates/voice-guide.md`; explains how operators populate. |
|
|
38
|
+
| `banned-ai-tells-shape.md` | Pointer at `@stravica-ai/digital-operator-pa/templates/banned-ai-tells.md`; explains how operators overlay. |
|
|
39
|
+
|
|
40
|
+
## How the split works in practice
|
|
41
|
+
|
|
42
|
+
The operator's `banned-ai-tells.md` inherits the 13-category shape from `banned-ai-tells-taxonomy.md`. Categories 1-12 have generic-across-operators bans in the CORE baseline; the operator extends each with operator-specific entries. Category 13 (Operator-specific) is populated fully from the operator side.
|
|
43
|
+
|
|
44
|
+
Overlay convention:
|
|
45
|
+
|
|
46
|
+
- Category headings MATCH the baseline. Same names, same order.
|
|
47
|
+
- Baseline entries stay in place; operator entries are added under existing categories.
|
|
48
|
+
- Category 13 (Operator-specific) is fully populated from the operator side.
|
|
49
|
+
|
|
50
|
+
**Shape enforcement** for 0.2.0 is documentation-contract only. A lint rule (`pa lint voice-shape`) may land in a later minor release once the pattern is validated in operator practice — for now, the operator maintains shape parity manually.
|
|
51
|
+
|
|
52
|
+
## How operators adopt this
|
|
53
|
+
|
|
54
|
+
Two choices:
|
|
55
|
+
|
|
56
|
+
1. **Overlay approach (recommended).** Operator's `operator/knowledge/writing/banned-ai-tells.md` inherits the 13-category shape; add operator-specific entries under each existing category and populate category 13. The core `banned-ai-tells-baseline.md` remains the source of the generic bans (referenced, not copied).
|
|
57
|
+
2. **Full-copy approach.** Operator copies the baseline into the operator repo and edits in place. Simpler but drifts from core over time; suitable for operators who don't intend to pull core updates.
|
|
58
|
+
|
|
59
|
+
## Related
|
|
60
|
+
|
|
61
|
+
- CLAUDE.md.template Bucket 6 — the rule list that references this deeper doc.
|
|
62
|
+
- `packages/core/roles/writer/definition.md` — the base writer role.
|
|
63
|
+
- `@stravica-ai/digital-operator-pa/templates/voice-guide.md` — voice-guide skeleton.
|
|
64
|
+
- `@stravica-ai/digital-operator-pa/templates/banned-ai-tells.md` — banned-tells skeleton.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# Banned AI-tells — core baseline
|
|
2
|
+
|
|
3
|
+
The generic-across-operators bans. Every operator inherits these; operator overlays extend with operator-specific entries under the same categories.
|
|
4
|
+
|
|
5
|
+
Taxonomy reference: `banned-ai-tells-taxonomy.md`.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Category 1 — Punctuation
|
|
10
|
+
|
|
11
|
+
**Em-dash filler.** Em-dashes chained as an alternative to commas and clauses. One em-dash per paragraph is fine when it does work; three in a paragraph reads as AI cadence.
|
|
12
|
+
|
|
13
|
+
**Semicolon-heavy compound sentences chained for cadence.** Semicolons should join two independent clauses that genuinely belong together; when they're used as an alternative to a full stop for rhythm, they read as AI.
|
|
14
|
+
|
|
15
|
+
**Setup-colon before a payoff.** "The result: everything changed." — colon-as-drumroll reads as AI. Prefer a full stop; let the payoff stand on its own line.
|
|
16
|
+
|
|
17
|
+
## Category 2 — Openers
|
|
18
|
+
|
|
19
|
+
**"In today's landscape / world / era."** Universal AI opener. Banned outright.
|
|
20
|
+
|
|
21
|
+
**"It's worth noting that..."** Setup phrase that adds nothing. Just note the thing.
|
|
22
|
+
|
|
23
|
+
**Opener-questions to introduce a section.** "What makes a good API?" — followed by an answer. This is not an opener; it's an AI convention. Just make the point.
|
|
24
|
+
|
|
25
|
+
**"Let's unpack..." / "Let's dive in..."** Journey-verb openers. Skip.
|
|
26
|
+
|
|
27
|
+
## Category 3 — Filler
|
|
28
|
+
|
|
29
|
+
**"Essentially" / "fundamentally" / "arguably" / "at its core".** Words that appear to qualify but add no information. Cut them.
|
|
30
|
+
|
|
31
|
+
**"The truth is..."** — Nothing about the truth follows that's more true than what preceded it. Filler.
|
|
32
|
+
|
|
33
|
+
**"In many ways" / "to some extent" / "in a sense".** Vague qualifiers that read as AI hedging.
|
|
34
|
+
|
|
35
|
+
## Category 4 — Forced contrasts
|
|
36
|
+
|
|
37
|
+
**"It's not X, it's Y" without a legitimate contrast.** When X is a straw target the reader wasn't holding, the contrast is manufactured. AI does this to signal "here's an insight" — but if the insight is real, it doesn't need the contrast scaffold.
|
|
38
|
+
|
|
39
|
+
**"Not just X but Y" without a payoff.** If Y isn't materially bigger or different than X, the "not just" is filler.
|
|
40
|
+
|
|
41
|
+
**Rhetorical "This isn't about X, it's about Y".** Same failure mode.
|
|
42
|
+
|
|
43
|
+
## Category 5 — Sentence-final tells
|
|
44
|
+
|
|
45
|
+
**"...and that changes everything."** Universal AI sentence-final. Banned outright.
|
|
46
|
+
|
|
47
|
+
**"...and that's the real story."** Same class.
|
|
48
|
+
|
|
49
|
+
**Trailing ". Period." (or ". Full stop.") as emphasis.** Reads as AI.
|
|
50
|
+
|
|
51
|
+
**"...for good reason."** Explanation-avoidance. Explain the reason or cut the phrase.
|
|
52
|
+
|
|
53
|
+
## Category 6 — Vocabulary
|
|
54
|
+
|
|
55
|
+
**"Delve" / "delve into".** Universal AI vocabulary. Banned outright.
|
|
56
|
+
|
|
57
|
+
**"Leverage" (as a verb, outside finance).** Banned. Use "use."
|
|
58
|
+
|
|
59
|
+
**"Unpack" (as a verb, outside luggage).** Journey-verb. Skip.
|
|
60
|
+
|
|
61
|
+
**"Landscape" / "ecosystem" (as bare-noun metaphor).** See Category 8.
|
|
62
|
+
|
|
63
|
+
**"Journey" (as metaphor for a process).** Banned outside actual travel narrative.
|
|
64
|
+
|
|
65
|
+
**"Robust" / "seamless" / "cutting-edge".** Marketing vocabulary. Cut.
|
|
66
|
+
|
|
67
|
+
## Category 7 — Corporate jargon
|
|
68
|
+
|
|
69
|
+
**"Stakeholder" (outside actual corporate contexts).** In prose, "the people who care" is fine.
|
|
70
|
+
|
|
71
|
+
**"Leverage synergies", "actionable insights", "value proposition", "circle back".** Business-writing in prose contexts reads as AI or as corporate ventriloquism.
|
|
72
|
+
|
|
73
|
+
**"At scale" (as a bare qualifier).** If scale matters, describe the scale. Otherwise cut.
|
|
74
|
+
|
|
75
|
+
## Category 8 — Bare-noun metaphors
|
|
76
|
+
|
|
77
|
+
**"Landscape" without a landscape.** If you're not describing terrain, don't use "landscape."
|
|
78
|
+
|
|
79
|
+
**"Ecosystem" without an ecosystem.** Same rule.
|
|
80
|
+
|
|
81
|
+
**"Arena" / "space" / "realm" used as neutral place-holders.** Reads as AI.
|
|
82
|
+
|
|
83
|
+
**Rule of thumb.** A metaphor noun needs a concrete referent in the same paragraph. If not, cut the metaphor.
|
|
84
|
+
|
|
85
|
+
## Category 9 — Narrator tells
|
|
86
|
+
|
|
87
|
+
**"This raises the question..."** Narrator-commentary that operators wouldn't write. Just raise the question.
|
|
88
|
+
|
|
89
|
+
**"It's worth noting that..." / "It's important to note that..."** Meta-commentary. Cut.
|
|
90
|
+
|
|
91
|
+
**"Consider this:"** AI narrator lead-in. If the following statement is worth considering, it stands on its own.
|
|
92
|
+
|
|
93
|
+
**"What's fascinating is..."** Narrator-emotion projection. Show why it's fascinating, don't tell.
|
|
94
|
+
|
|
95
|
+
## Category 10 — Hyphenated compounds
|
|
96
|
+
|
|
97
|
+
**"Cutting-edge."** Marketing hyphenate. Banned.
|
|
98
|
+
|
|
99
|
+
**"Next-generation" / "state-of-the-art" / "forward-thinking".** Marketing hyphenates. Banned.
|
|
100
|
+
|
|
101
|
+
**"Ground-breaking" / "game-changing" / "world-class".** Same class.
|
|
102
|
+
|
|
103
|
+
## Category 11 — Structural rhythms
|
|
104
|
+
|
|
105
|
+
**Three-item lists constructed for rhythm, not content.** "It's about people, process, and product" — when only one or two of the items are load-bearing and the third is fill. Cut the fill.
|
|
106
|
+
|
|
107
|
+
**Systematic sentence-length alternation.** AI writes in a distinctive rhythm — short. Then long, with more clauses. Then short. Real prose has natural variation; systematic alternation reads as AI.
|
|
108
|
+
|
|
109
|
+
**Dependent-clause-then-main-clause reversal as a stylistic default.** "While it's easy to focus on X, the real issue is Y." One per section is fine; four in a section is AI.
|
|
110
|
+
|
|
111
|
+
## Category 12 — Clever-isms
|
|
112
|
+
|
|
113
|
+
**"It turns out..."** AI convention for "here's the surprise." If there's a surprise, describe it.
|
|
114
|
+
|
|
115
|
+
**"Here's the thing..."** Conversational-lead-in that's become an AI convention.
|
|
116
|
+
|
|
117
|
+
**"The real answer is..."** Same class as "The truth is..." from Category 3.
|
|
118
|
+
|
|
119
|
+
**"Perhaps counterintuitively..."** If the point is counterintuitive, show why. Don't just claim it.
|
|
120
|
+
|
|
121
|
+
## Category 13 — Operator-specific
|
|
122
|
+
|
|
123
|
+
<!-- OPERATOR: populate this category with operator-specific tells that don't fit categories 1-12. Examples of the SHAPE (do not copy verbatim):
|
|
124
|
+
- Ban on a specific word the operator finds AI-ish
|
|
125
|
+
- Ban on a specific structural pattern the operator has flagged in past drafts
|
|
126
|
+
- Register-specific bans (formal vs casual)
|
|
127
|
+
-->
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## New-tell capture procedure
|
|
132
|
+
|
|
133
|
+
See `new-tell-capture-procedure.md`.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
scaffold: banned-ai-tells-shape.md
|
|
3
|
+
bucket: content-voice (Bucket 6)
|
|
4
|
+
what belongs here: pointer at the banned-ai-tells.md template + overlay convention.
|
|
5
|
+
-->
|
|
6
|
+
|
|
7
|
+
# Banned-AI-tells shape
|
|
8
|
+
|
|
9
|
+
The core ships a template skeleton at `@stravica-ai/digital-operator-pa/templates/banned-ai-tells.md`. Operators overlay their specific tells on top of the CORE baseline entries at `banned-ai-tells-baseline.md`.
|
|
10
|
+
|
|
11
|
+
## Overlay convention
|
|
12
|
+
|
|
13
|
+
The operator's `operator/knowledge/writing/banned-ai-tells.md`:
|
|
14
|
+
|
|
15
|
+
- **Uses the same 13-category shape** as `banned-ai-tells-taxonomy.md`. Category names and order must match.
|
|
16
|
+
- **Inherits the core baseline entries** — the generic-across-operators bans in categories 1-12. The operator's doc REFERENCES the baseline (either by cross-link or by explicit "inherited from core baseline") rather than duplicating.
|
|
17
|
+
- **Adds operator-specific entries** under existing categories 1-12 for operator-specific bans that fit the mechanism.
|
|
18
|
+
- **Fully populates category 13** (Operator-specific) with operator-specific bans that don't fit categories 1-12.
|
|
19
|
+
|
|
20
|
+
## Two overlay strategies
|
|
21
|
+
|
|
22
|
+
**Strategy 1: reference the baseline** (recommended).
|
|
23
|
+
|
|
24
|
+
Operator's `banned-ai-tells.md` under each category:
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
## Category 6 — Vocabulary
|
|
28
|
+
|
|
29
|
+
**Core baseline (inherited).** See `@stravica-ai/engineering-pa-core/knowledge/content-voice/banned-ai-tells-baseline.md § Category 6`.
|
|
30
|
+
|
|
31
|
+
**Operator-specific additions:**
|
|
32
|
+
|
|
33
|
+
- **"cut" as a noun.** Barry doesn't use "cut" as a noun ("that was a strong cut"). Operator-specific ban.
|
|
34
|
+
- ...
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Strategy 2: full copy** (simpler; drifts from core).
|
|
38
|
+
|
|
39
|
+
Operator copies the baseline's entries verbatim and adds operator-specific entries in the same category. Simpler for reading — the operator sees the full list in one file — but the operator's file drifts from core if the baseline updates.
|
|
40
|
+
|
|
41
|
+
## Shape enforcement (0.2.0)
|
|
42
|
+
|
|
43
|
+
Documentation contract only. No lint. If the operator's overlay diverges from the 13-category shape, the writer role may fail to find the banned entries it expects. Operator maintains shape parity manually.
|
|
44
|
+
|
|
45
|
+
Future lint (`pa lint voice-shape`) may land in a later minor release once the pattern is validated in practice.
|
|
46
|
+
|
|
47
|
+
## How the writer role uses this
|
|
48
|
+
|
|
49
|
+
Base `writer` reads the operator's `banned-ai-tells.md` on every dispatch. Reads it as a full doc; runs the drafted output through each category's entries as a gate before returning.
|
|
50
|
+
|
|
51
|
+
The core baseline entries apply regardless of whether the operator's overlay references them explicitly or copies them — the writer role reads the OPERATOR's file, and the baseline is only enforced if it reaches the operator's file (via reference resolution or full copy).
|
|
52
|
+
|
|
53
|
+
## Related
|
|
54
|
+
|
|
55
|
+
- `@stravica-ai/digital-operator-pa/templates/banned-ai-tells.md` — the operator-facing skeleton.
|
|
56
|
+
- `banned-ai-tells-baseline.md` — the core baseline entries.
|
|
57
|
+
- `banned-ai-tells-taxonomy.md` — the 13 categories.
|
|
58
|
+
- `new-tell-capture-procedure.md` — how new tells enter.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Banned AI-tells — the 13 categories
|
|
2
|
+
|
|
3
|
+
The taxonomy every operator's banned-tells doc inherits. Category names and order are load-bearing — operator overlays MUST match.
|
|
4
|
+
|
|
5
|
+
| # | Category | One-line description |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| 1 | Punctuation | Rhythm markers that read as AI (em-dash filler, over-use of colons for setup, semicolon-heavy compound sentences chained for cadence). |
|
|
8
|
+
| 2 | Openers | Sentence-first constructions that read as AI ("In today's landscape", "It's worth noting", opener-questions to introduce a section). |
|
|
9
|
+
| 3 | Filler | Words that add nothing but AI cadence ("essentially", "fundamentally", "arguably", "at its core"). |
|
|
10
|
+
| 4 | Forced contrasts | Constructions setting up an opposition where none exists ("it's not X, it's Y" with X being a straw target; "not just X but Y" without a contrast payoff). |
|
|
11
|
+
| 5 | Sentence-final tells | Constructions at sentence end that read as AI ("and that changes everything", "and that's the real story", trailing ". Period."). |
|
|
12
|
+
| 6 | Vocabulary | Individual words that carry AI signal ("delve", "leverage", "unpack", "landscape", "ecosystem", "journey"). |
|
|
13
|
+
| 7 | Corporate jargon | Business-writing borrowed for prose contexts ("stakeholder", "leverage synergies", "actionable insights"). |
|
|
14
|
+
| 8 | Bare-noun metaphors | Metaphor nouns used without a concrete referent ("landscape", "ecosystem", "arena" — where no actual landscape/ecosystem/arena is described). |
|
|
15
|
+
| 9 | Narrator tells | Meta-commentary the operator wouldn't write ("This raises the question", "It's worth noting that", "Consider this"). |
|
|
16
|
+
| 10 | Hyphenated compounds | Compound coinages an operator wouldn't reach for ("cutting-edge", "next-generation", "forward-thinking"). |
|
|
17
|
+
| 11 | Structural rhythms | Sentence-shape patterns that read as AI (three-item lists constructed for rhythm not content, dependent-clause-then-main-clause reversal cadence, systematic sentence-length alternation). |
|
|
18
|
+
| 12 | Clever-isms | Phrases that try to sound clever ("It turns out", "Here's the thing", "The real answer is"). |
|
|
19
|
+
| 13 | Operator-specific | Populated fully from the operator side. Operator-specific bans that don't fit categories 1-12. |
|
|
20
|
+
|
|
21
|
+
## How this taxonomy is used
|
|
22
|
+
|
|
23
|
+
**Core baseline** (`banned-ai-tells-baseline.md`) populates categories 1-12 with **generic-across-operators bans** — the entries every operator should ban regardless of voice.
|
|
24
|
+
|
|
25
|
+
**Operator overlays** add operator-specific entries under each existing category. Same category names, same order; more entries.
|
|
26
|
+
|
|
27
|
+
**Category 13** exists so operator-specific bans have a home when they don't fit the mechanism categories. Barry-voice specific bans (e.g. "cut" as a noun) land here, not in Vocabulary.
|
|
28
|
+
|
|
29
|
+
## Related
|
|
30
|
+
|
|
31
|
+
- `banned-ai-tells-baseline.md` — the core baseline entries.
|
|
32
|
+
- `banned-ai-tells-shape.md` — the template skeleton pointer.
|
|
33
|
+
- `@stravica-ai/digital-operator-pa/templates/banned-ai-tells.md` — the operator-facing skeleton.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
scaffold: content-pipeline-routing.md
|
|
3
|
+
bucket: content-voice (Bucket 6)
|
|
4
|
+
what belongs here: content-pipeline routing rules.
|
|
5
|
+
- Prose → writer role.
|
|
6
|
+
- Surface-specialised content → operator-side specialised writer roles.
|
|
7
|
+
- Content-publishing extensions (schedulers, LI tools) are operator overlays.
|
|
8
|
+
- Never hand-craft content in the main thread when dispatching produces higher quality.
|
|
9
|
+
-->
|
|
10
|
+
|
|
11
|
+
# Content pipeline routing
|
|
12
|
+
|
|
13
|
+
## The rule
|
|
14
|
+
|
|
15
|
+
Route content through the right pipeline. The PA does not draft in the main thread when a dispatch produces higher-quality voice-consistent output.
|
|
16
|
+
|
|
17
|
+
## Base routing
|
|
18
|
+
|
|
19
|
+
- **Prose (essays, articles, long-form).** → `writer` role.
|
|
20
|
+
- **Surface-specialised content (LinkedIn posts, tweets, newsletters, ad copy).** → operator-side specialised writer role (`linkedin-writer`, `newsletter-writer`, etc.) that extends the base `writer`.
|
|
21
|
+
- **Meta content about the operator's own operating model.** → the PA can draft inline (this is not audience-facing content; voice discipline is looser).
|
|
22
|
+
|
|
23
|
+
## Base writer role
|
|
24
|
+
|
|
25
|
+
`packages/core/roles/writer/definition.md`. Voice-doc-driven — reads voice-guide + banned-tells + operator profile from operator-configured paths on every dispatch. Deterministic: same inputs, same voice output.
|
|
26
|
+
|
|
27
|
+
The base writer reads voice from config; the operator points the config at `operator/knowledge/writing/voice-guide.md` (or the operator's chosen path).
|
|
28
|
+
|
|
29
|
+
## Operator-side specialisations
|
|
30
|
+
|
|
31
|
+
Surface-specialised writers layer surface-specific rules on top of the base:
|
|
32
|
+
|
|
33
|
+
- **`linkedin-writer`** — LI-specific structural rules (character targets, opener conventions, engagement patterns) layered on base writer voice.
|
|
34
|
+
- **`newsletter-writer`** — newsletter-format rules layered.
|
|
35
|
+
|
|
36
|
+
Specialisations MUST inherit the base writer's read-then-gate-then-deliver sequence and MUST NOT relax the banned-tells check.
|
|
37
|
+
|
|
38
|
+
## Content-publishing tooling
|
|
39
|
+
|
|
40
|
+
**Out of core.** Content publishing is a per-operator concern — the surfaces the operator ships to, the cadence, the scheduling, the metrics. All of these are operator-side.
|
|
41
|
+
|
|
42
|
+
If the operator ships a content-publishing tool (e.g. a `content-pub` CLI), it lives under `operator/extensions/tools/`. Content state changes go through that tool; direct edits to schedule data are lint-refused.
|
|
43
|
+
|
|
44
|
+
<!-- OPERATOR: name your content-publishing tool here (if any) and its verb surface. -->
|
|
45
|
+
|
|
46
|
+
## Push back on voice-flat drafts before they ship
|
|
47
|
+
|
|
48
|
+
Voice restarts caught mid-draft are cheap. Post-publication corrections are expensive. The PA reads the drafted output BEFORE shipping and pushes back on obvious voice failures — even after a well-briefed dispatch.
|
|
49
|
+
|
|
50
|
+
## Include voice + banned-tells references in every writing brief
|
|
51
|
+
|
|
52
|
+
Workers don't inherit voice by osmosis. The brief MUST name the voice-guide path and the banned-tells path in Tools-and-sources.
|
|
53
|
+
|
|
54
|
+
## Related
|
|
55
|
+
|
|
56
|
+
- CLAUDE.md.template Bucket 6 rules 1, 3.
|
|
57
|
+
- `packages/core/roles/writer/definition.md` — the base writer role.
|
|
58
|
+
- `voice-guide-shape.md` / `banned-ai-tells-shape.md` — the template skeleton pointers.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# New-tell capture procedure
|
|
2
|
+
|
|
3
|
+
How new AI-tells enter the operator's banned-tells doc.
|
|
4
|
+
|
|
5
|
+
## The rule
|
|
6
|
+
|
|
7
|
+
**New tells enter via the Librarian's synthesis sweep, not via manual append.**
|
|
8
|
+
|
|
9
|
+
An operator observes a tell (in their own writing, in a worker's draft, in someone else's writing that highlights the pattern). The operator logs it as a staging observation. On the next distillation sweep, the Librarian processes it into the banned-tells doc.
|
|
10
|
+
|
|
11
|
+
## Operator side — staging the observation
|
|
12
|
+
|
|
13
|
+
1. Notice the tell. Get the specific example (the sentence, the phrase, the exact wording).
|
|
14
|
+
2. Stage: `agents/<paName>/staging/<timestamp>_correction_<slug>.md` (if the tell was caught in a draft) or `<timestamp>_domain_voice-tell-<slug>.md` (if the tell was noticed elsewhere).
|
|
15
|
+
3. In the observation: name the specific tell, quote the example, note which category it likely fits (from the 13-category taxonomy), state why it reads as AI.
|
|
16
|
+
4. Continue with the work. The observation is captured; the Librarian handles the routing.
|
|
17
|
+
|
|
18
|
+
## Librarian side — synthesis
|
|
19
|
+
|
|
20
|
+
On the next distillation sweep:
|
|
21
|
+
|
|
22
|
+
1. **Read the observation in full context.** The source draft, the operator's review comment, any prior related observations.
|
|
23
|
+
2. **Decide category placement.** Does it fit an existing category (extend that category's entries)? Or does it warrant a new category placement (unusual — the taxonomy is stable, but occasionally a new pattern emerges)?
|
|
24
|
+
3. **Restructure the category to accommodate.** Do NOT append at the end. Read the whole category, locate where the new tell fits (by mechanism, not by chronology), rewrite the category to include the new entry in its logical place.
|
|
25
|
+
4. **Update rationale and examples.** Include the operator's specific example verbatim. Include the operator's stated reason if useful.
|
|
26
|
+
5. **Flag major taxonomy changes.** If the addition materially changes the taxonomy's shape (a new category, a category rename), flag for operator review — the Librarian never silently reshapes the operator's tell catalogue.
|
|
27
|
+
6. **Commit with the observation ID.** Provenance is traceable.
|
|
28
|
+
|
|
29
|
+
## What NOT to do
|
|
30
|
+
|
|
31
|
+
- **Do NOT treat banned-ai-tells.md as a linear log.** Every synthesis is a restructure — the doc reflects CURRENT understanding, not chronology of capture.
|
|
32
|
+
- **Do NOT ask the PA to append.** The PA stages observations; the Librarian synthesises. Direct writes to banned-ai-tells.md bypass the discipline.
|
|
33
|
+
- **Do NOT invent tells.** New entries come from real observations, not hypothetical extrapolation.
|
|
34
|
+
|
|
35
|
+
## Related
|
|
36
|
+
|
|
37
|
+
- `banned-ai-tells-baseline.md` — the current core baseline entries.
|
|
38
|
+
- `banned-ai-tells-taxonomy.md` — the 13 categories.
|
|
39
|
+
- `packages/core/roles/librarian/definition.md` — the Librarian role.
|
|
40
|
+
- CLAUDE.md.template Bucket 4 rule 7 — the Librarian sweep pattern.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
scaffold: voice-guide-shape.md
|
|
3
|
+
bucket: content-voice (Bucket 6)
|
|
4
|
+
what belongs here: pointer at the voice-guide.md template + how to populate.
|
|
5
|
+
-->
|
|
6
|
+
|
|
7
|
+
# Voice-guide shape
|
|
8
|
+
|
|
9
|
+
The core ships a template skeleton at `@stravica-ai/digital-operator-pa/templates/voice-guide.md`. Operators copy this into their operator repo (typically `operator/knowledge/writing/voice-guide.md`) and populate.
|
|
10
|
+
|
|
11
|
+
## What the template ships
|
|
12
|
+
|
|
13
|
+
- **Positive-shape principles** — what the voice sounds like. Not what it doesn't.
|
|
14
|
+
- **Register calibration** — where on the formal/casual spectrum the voice sits, and how it shifts by surface (long-form vs LinkedIn vs email).
|
|
15
|
+
- **Voice-tell examples** — the operator's own writing showing the voice in action, annotated so a role can extract the pattern.
|
|
16
|
+
- **Sections a voice doc has** — the template's own structure is the shape every operator's voice-guide follows.
|
|
17
|
+
|
|
18
|
+
## How the writer role uses it
|
|
19
|
+
|
|
20
|
+
Base `writer` reads voice-guide + banned-tells on every dispatch. The voice-guide is the positive-shape source; the banned-tells is the negative-shape complement.
|
|
21
|
+
|
|
22
|
+
Deterministic outcome: same voice-guide + same banned-tells + same prompt → same voice output. If the writer produces inconsistent voice output on repeat runs, the voice-guide is under-specified (not the writer's fault).
|
|
23
|
+
|
|
24
|
+
## Populating
|
|
25
|
+
|
|
26
|
+
Follow the template's structure. Do not restructure the voice-guide skeleton — the shape is what makes voice documents mutually intelligible across operators.
|
|
27
|
+
|
|
28
|
+
**Do:**
|
|
29
|
+
|
|
30
|
+
- Populate positive-shape principles with the operator's own examples.
|
|
31
|
+
- Populate register calibration with concrete markers (specific words that fit, specific words that don't).
|
|
32
|
+
- Populate voice-tell examples with real drafts, annotated.
|
|
33
|
+
|
|
34
|
+
**Do not:**
|
|
35
|
+
|
|
36
|
+
- Delete template sections you don't yet know how to fill. Leave the `<!-- OPERATOR: populate -->` marker; the writer will refuse to draft against an unpopulated voice guide, which is the correct failure mode.
|
|
37
|
+
- Add operator-specific structural sections outside the template's shape. If the voice needs a new section, propose an upstream template change first.
|
|
38
|
+
|
|
39
|
+
## Related
|
|
40
|
+
|
|
41
|
+
- `@stravica-ai/digital-operator-pa/templates/voice-guide.md` — the skeleton.
|
|
42
|
+
- `banned-ai-tells-shape.md` — the negative-shape complement.
|
|
43
|
+
- `packages/core/roles/writer/definition.md` — the role that consumes the voice-guide.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# delegation-dispatch — bucket knowledge scaffold
|
|
2
|
+
|
|
3
|
+
**Bucket:** 3 of 7. Referenced from CLAUDE.md.template Bucket 3.
|
|
4
|
+
|
|
5
|
+
## What this bucket carries
|
|
6
|
+
|
|
7
|
+
How the PA delegates work — the 8-section briefing contract, dispatch envelope (what actually works empirically), delegation modes, task-group patterns, team improvement loop, tool-development policy.
|
|
8
|
+
|
|
9
|
+
## Scope — core vs operator overlay
|
|
10
|
+
|
|
11
|
+
**In core.** Universal delegation mechanism: the 8-section brief, the depth/concurrency/isolation dispatch findings, delegation-mode selection (single subagent vs task group vs single-threaded), task-group pattern with depth-2 orchestration posture, the tool-development-through-tool-developer policy (Node-only), the process-and-result evaluation loop on every return.
|
|
12
|
+
|
|
13
|
+
**In operator overlay** (`operator/knowledge/delegation-dispatch/`). Operator-specific dispatch patterns: surface-specific brief bolt-ons, operator-specialised role list (the specific role LIST beyond the base ladder), per-project orchestration conventions.
|
|
14
|
+
|
|
15
|
+
## Canonical entries in this scaffold
|
|
16
|
+
|
|
17
|
+
| File | Purpose |
|
|
18
|
+
|---|---|
|
|
19
|
+
| `briefing-contract.md` | The 8-section brief shape (Goal, Trace, Context, Tools and sources, Boundaries, Output format, Done when, Escalation rule) plus shared-MCP-session hazards, structured-return-schema requirement, checkpoint pattern for long-running dispatches. |
|
|
20
|
+
| `dispatch-envelope.md` | What actually works — capability matrix, depth findings, MCP inheritance, isolation semantics, long-running health, brief-writing implications. Promoted from operator on 2026-07-05. |
|
|
21
|
+
| `delegation-modes.md` | Single subagent vs task group vs single-threaded. Selection tree. Topic-differs pollution-prevention rule. |
|
|
22
|
+
| `task-groups-and-orchestrators.md` | Task-group pattern; depth-2 constraint. Project Lead as orchestrator for multi-role projects. |
|
|
23
|
+
| `team-improvement-loop.md` | Evaluate process AND result on every return. Feed role defs, briefs, envelopes, roster. |
|
|
24
|
+
| `tool-development-policy.md` | All tool development via tool-developer, in Node.js. No shell scripts, ever. Cross-platform breakage rationale. |
|
|
25
|
+
|
|
26
|
+
## How operators adopt this
|
|
27
|
+
|
|
28
|
+
Copy the shape into `operator/knowledge/delegation-dispatch/`. Populate the operator's specific role LIST, dispatch bolt-ons, and per-project conventions in the marked hooks.
|
|
29
|
+
|
|
30
|
+
## Related
|
|
31
|
+
|
|
32
|
+
- CLAUDE.md.template Bucket 3 — the rule list that references this deeper doc.
|
|
33
|
+
- `packages/core/docs/standards/briefing-contract.md` — the canonical briefing standard.
|
|
34
|
+
- `packages/core/roles/dispatch-briefer/definition.md` — the Briefer role.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
scaffold: briefing-contract.md
|
|
3
|
+
bucket: delegation-dispatch (Bucket 3)
|
|
4
|
+
what belongs here: the 8-section brief pattern + three Rev 4 additions.
|
|
5
|
+
- Shared-MCP-session hazard clause in Boundaries.
|
|
6
|
+
- Structured-return-schema requirement in Output format.
|
|
7
|
+
- Checkpoint-pattern requirement for long-running dispatches.
|
|
8
|
+
Canonical field-by-field standard: packages/core/docs/standards/briefing-contract.md.
|
|
9
|
+
-->
|
|
10
|
+
|
|
11
|
+
# Briefing contract
|
|
12
|
+
|
|
13
|
+
Every dispatch uses an 8-section brief. Section headings are mechanical — copy them verbatim. Full field-by-field rationale in `@stravica-ai/engineering-pa-core/docs/standards/briefing-contract.md`.
|
|
14
|
+
|
|
15
|
+
## The 8 sections
|
|
16
|
+
|
|
17
|
+
| Section | What it carries |
|
|
18
|
+
|---|---|
|
|
19
|
+
| Goal | One sentence, outcome-shaped. What shipping looks like. |
|
|
20
|
+
| Trace | How we got here. The reasoning that led to this task. Load-bearing. |
|
|
21
|
+
| Context | Paths, files, prior decisions, operator preferences relevant to this task. Extracted, not full-file. |
|
|
22
|
+
| Tools and sources | What tools to use. Which files to read. Which to avoid. |
|
|
23
|
+
| Boundaries | What is in scope, what is out. Where decide-alone becomes escalate. Shared-parent-state hazards. |
|
|
24
|
+
| Output format | Structured return-report shape. Return on completion or abort ONLY. |
|
|
25
|
+
| Done when | Boolean-checkable ship gate. |
|
|
26
|
+
| Escalation rule | When to stop and report partial. |
|
|
27
|
+
|
|
28
|
+
## Trace is the field most often missed
|
|
29
|
+
|
|
30
|
+
Without it, workers make locally consistent but globally incompatible choices. The trace is prose the worker reads to understand WHY this task exists — the reasoning, the prior decisions, the operator direction if any. Cognition's Flappy Bird failure mode captures why: workers briefed without trace re-derive context locally and produce output the integration step can't reconcile.
|
|
31
|
+
|
|
32
|
+
## Load-bearing additions per Rev 4
|
|
33
|
+
|
|
34
|
+
### 1. Shared-MCP-session hazard in Boundaries
|
|
35
|
+
|
|
36
|
+
Worktree isolation covers git only. `/tmp`, `$HOME`, network, and MCP tool sessions (Playwright browser, OAuth-gated services like Gmail, Google Drive, Atlassian) all leak to workers AND are shared with the parent. Every brief whose worker will use one of these tools must:
|
|
37
|
+
|
|
38
|
+
- Acknowledge the shared session in the Boundaries section.
|
|
39
|
+
- Instruct the worker to serialise with any other agent using the same tool, OR use a headless-Node isolation approach, OR explicitly accept the collision risk.
|
|
40
|
+
|
|
41
|
+
Full findings: see `dispatch-envelope.md` § MCP Tool Availability.
|
|
42
|
+
|
|
43
|
+
### 2. Structured-return-schema requirement in Output format
|
|
44
|
+
|
|
45
|
+
The parent only sees the worker's final message — no streaming, no intermediate tool events, no per-child transcript reads. The Output format section MUST specify the exact return shape the parent expects. Common shape:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
### <what-shipped> — worker return
|
|
49
|
+
|
|
50
|
+
**Status:** success | partial | escalation
|
|
51
|
+
|
|
52
|
+
**Deliverables checklist (mark each ✓ or note gap):**
|
|
53
|
+
- [ ] ...
|
|
54
|
+
- [ ] ...
|
|
55
|
+
|
|
56
|
+
**Files landed:** <count> files, <+lines/-lines>
|
|
57
|
+
|
|
58
|
+
**Handoff notes:** ...
|
|
59
|
+
|
|
60
|
+
**Escalations (if any):** ...
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
For task-group orchestrators, the Output format additionally requires per-worker enumeration (name / role / agentId / status / key artefacts) because the root only sees what the orchestrator reports.
|
|
64
|
+
|
|
65
|
+
### 3. Checkpoint pattern for long-running dispatches
|
|
66
|
+
|
|
67
|
+
For work expected to run more than ~5 minutes, brief the worker to `SendMessage("main", <one-line status>)` at natural checkpoints. Silence-vs-completion is the only default health signal — insufficient for genuinely long jobs.
|
|
68
|
+
|
|
69
|
+
Checkpoint intervals: at natural task boundaries (finished section 1, moving to section 2), not on a fixed clock. A message every 60 seconds spams; a message every 15 minutes with a real state update is useful.
|
|
70
|
+
|
|
71
|
+
The default posture is NO checkpoints — most dispatches run under 5 minutes and silence-vs-completion is fine. Add checkpoints deliberately when the shape of the work warrants.
|
|
72
|
+
|
|
73
|
+
## Related
|
|
74
|
+
|
|
75
|
+
- `packages/core/docs/standards/briefing-contract.md` — canonical field-by-field standard.
|
|
76
|
+
- `dispatch-envelope.md` — capability matrix / depth findings / MCP inheritance / brief-writing implications.
|
|
77
|
+
- `packages/core/roles/dispatch-briefer/definition.md` — the Briefer role that authors briefs.
|