Skip to content

chore: remove internal team-docs from main - #42

Merged
bradygaster merged 2 commits into
mainfrom
dev
Feb 13, 2026
Merged

chore: remove internal team-docs from main#42
bradygaster merged 2 commits into
mainfrom
dev

Conversation

@bradygaster

Copy link
Copy Markdown
Owner

Removes internal team content (proposals, human-evals, demo-script, release-process) from tracked files. Blog posts remain.

Requested by Brady.

Session: 2026-02-13-v040-merge-cleanup
Requested by: Brady (bradygaster)

Changes:
- logged session to .ai-team/log/2026-02-13-v040-merge-cleanup.md
- merged 3 decisions from inbox into decisions.md (MCP integration, context optimization, plugin marketplace)
- deleted inbox files after merging
- propagated team updates to fenster and keaton agent history files
@bradygaster
bradygaster merged commit ef38fba into main Feb 13, 2026
joniba pushed a commit to joniba/squad that referenced this pull request Mar 26, 2026
…ct, format)

Files cherry-picked from branches squad/2-filter-messages, squad/3-extract-decisions,
and squad/4-format-summary. Original PRs bradygaster#31, bradygaster#32, bradygaster#42 had scope pollution from
the worktree clobbering problem.

Closes bradygaster#2, bradygaster#3, bradygaster#4

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
bradygaster added a commit that referenced this pull request Sep 1, 2026
Both activation paths could report labels that were never applied, and the
`Activation bindings:` block specified JSON the agent could not produce.

Over-claim by attribution. `squad-plan-activate` Label Pre-flight Step 8 let a
summary name a `squad:{agent}` label once "that issue's `create-issue` call
returned successfully carrying it". `create-issue`'s `labels:` field cannot land
a label the repository lacks — the failure #1959 fixed — so that sentence
licensed reporting labels that never existed. Both paths now condition a
reported label on an accepted `add_labels` call carrying it for that same
issue, targeted by the item's own temporary ID or, for a reused item, its
verified real number. A successful `create-issue` is stated to be no evidence.

Invalid bindings JSON. The block required bare `{created task issue number}`.
The agent never learns a created issue's real number during its turn, and
gh-aw's temporary-ID substitution is a plain text replacement over the whole
comment body that does not skip fenced code blocks and keeps the `#`. A bare
`"issue":#aw_task1` becomes `"issue":#42` — invalid JSON that fails the entire
block. Verified against the pinned runtime (github/gh-aw-actions@v0.87.2,
setup/js/temporary_id.cjs). Quoting is the narrowest correct fix:
`"issue":"#aw_task1"` becomes `"issue":"#42"`, which parses. No new safe job,
no temporary_id_map plumbing, and no inferred numbers.

Runtime limitation, stated rather than worked around: safe outputs are applied
in a post-agent job, so a run has evidence only that a call was accepted for a
specific target, never the GitHub API result. "Accepted" is the strongest
honest claim; the prose forbids saying a label was verified, confirmed, or
checked. Under-claiming is rejected too — an accepted operation may not be
reported as an omission — and the required `Non-roster agent values` handling
from the base stack is preserved and made two-directional.

The post-activation checker resolves `"#42"` and bare integers, and fails
closed on an unresolved `#aw_...` rather than skipping or repairing it.

Tests: new focused suite covering both paths; 20 of its 28 assertions fail
against the pre-fix prose. Two existing assertions that pinned the old
create-issue attribution are updated to the strictly stronger condition, with
their original intent (#1860, #1959) preserved.

Source growth guard raised 170 -> 173 KB. Measured against dev with #1966
already squash-merged, so this counts only #1963's bytes: 175 485 B = 171.4 KB.
172 KB would leave 643 B, reproducing the near-zero-margin failure the guard's
own comment warns about; 173 KB leaves 1 667 B. Not set higher, because #1964
is unmerged and pre-raising for it would hide growth that has not happened. The
ambient prompt budget is unaffected at 32 795 B = 32.0 KB against 40 KB, which
is the condition that guard names as making a raise legitimate.

Closes #1963
Parent #1957
Previously stacked on #1959 (PR #1966); that merged to dev as 9e3f6b3, so this
now targets dev directly and contains #1963's changes only.

Working as Procedures (Prompt Engineer)

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
bradygaster added a commit that referenced this pull request Sep 1, 2026
#1963) (#1967)

* fix(workflows): report accepted label outcomes in activation summaries

Both activation paths could report labels that were never applied, and the
`Activation bindings:` block specified JSON the agent could not produce.

Over-claim by attribution. `squad-plan-activate` Label Pre-flight Step 8 let a
summary name a `squad:{agent}` label once "that issue's `create-issue` call
returned successfully carrying it". `create-issue`'s `labels:` field cannot land
a label the repository lacks — the failure #1959 fixed — so that sentence
licensed reporting labels that never existed. Both paths now condition a
reported label on an accepted `add_labels` call carrying it for that same
issue, targeted by the item's own temporary ID or, for a reused item, its
verified real number. A successful `create-issue` is stated to be no evidence.

Invalid bindings JSON. The block required bare `{created task issue number}`.
The agent never learns a created issue's real number during its turn, and
gh-aw's temporary-ID substitution is a plain text replacement over the whole
comment body that does not skip fenced code blocks and keeps the `#`. A bare
`"issue":#aw_task1` becomes `"issue":#42` — invalid JSON that fails the entire
block. Verified against the pinned runtime (github/gh-aw-actions@v0.87.2,
setup/js/temporary_id.cjs). Quoting is the narrowest correct fix:
`"issue":"#aw_task1"` becomes `"issue":"#42"`, which parses. No new safe job,
no temporary_id_map plumbing, and no inferred numbers.

Runtime limitation, stated rather than worked around: safe outputs are applied
in a post-agent job, so a run has evidence only that a call was accepted for a
specific target, never the GitHub API result. "Accepted" is the strongest
honest claim; the prose forbids saying a label was verified, confirmed, or
checked. Under-claiming is rejected too — an accepted operation may not be
reported as an omission — and the required `Non-roster agent values` handling
from the base stack is preserved and made two-directional.

The post-activation checker resolves `"#42"` and bare integers, and fails
closed on an unresolved `#aw_...` rather than skipping or repairing it.

Tests: new focused suite covering both paths; 20 of its 28 assertions fail
against the pre-fix prose. Two existing assertions that pinned the old
create-issue attribution are updated to the strictly stronger condition, with
their original intent (#1860, #1959) preserved.

Source growth guard raised 170 -> 173 KB. Measured against dev with #1966
already squash-merged, so this counts only #1963's bytes: 175 485 B = 171.4 KB.
172 KB would leave 643 B, reproducing the near-zero-margin failure the guard's
own comment warns about; 173 KB leaves 1 667 B. Not set higher, because #1964
is unmerged and pre-raising for it would hide growth that has not happened. The
ambient prompt budget is unaffected at 32 795 B = 32.0 KB against 40 KB, which
is the condition that guard names as making a raise legitimate.

Closes #1963
Parent #1957
Previously stacked on #1959 (PR #1966); that merged to dev as 9e3f6b3, so this
now targets dev directly and contains #1963's changes only.

Working as Procedures (Prompt Engineer)

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(workflows): remove applied-label over-claim from the shared ontology

Review on #1967 caught the exact defect this PR exists to remove, in a file the
PR already touches. The `Activation bindings:` paragraph in the shared ontology
said bindings record "epic labels reported as applied", while the paragraph
directly below it correctly defines a reported label as an accepted `add_labels`
operation that the agent never observes landing. squad.md stated the accurate
contract and the ontology stated the strong one.

That split matters because the ontology is the artifact contract the
deterministic checker consumes and the file most likely to be read standalone: a
consumer reading only that paragraph gets the claim the runtime cannot justify.
Left as prose-only drift it would have turned one consistently-wrong place into
two inconsistently-wrong ones.

Reworded to the accepted-operation semantics used everywhere else, pointing a
standalone reader at the definition below it.

Guarded against re-drift with a negative assertion over the ontology, mirroring
the guard the suite already applies to squad.md. The match is shape-targeted
rather than a ban on the word "applied": the same file legitimately says safe
outputs "are applied after the agent turn", which is the justification for the
weaker claim, so a blanket match would forbid the correct prose too. Verified by
mutation — restoring the old wording fails the new test, and only that test.

Also pins the local `gh aw` install hint to v0.87.10, matching the pin in
.github/workflows/squad-ci.yml, so local strict-compile and lock output match
CI. The separate `gh-aw-actions@v0.87.2` citation is left as-is: that is the
pinned runtime action whose temporary_id.cjs this change was verified against,
which is a different artifact from the CLI extension, and v0.87.2 is still what
.github/workflows references.

Source growth re-measured after the edit: 175 519 B = 171.4 KB, 1 633 B under
the 173 KB guard, so the guard is unchanged. Ambient prompt unaffected.

Closes #1963
Parent #1957

Working as Procedures (Prompt Engineer)

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
bradygaster added a commit that referenced this pull request Sep 2, 2026
…g check

FIDO rejected the first revision of #1980 with two reproduced defects in
assertAcceptedOnlyLabelWording (scripts/check-agent-binding.mjs):

1. False negative: NEGATION_NEARBY matched a negation anywhere on the whole
   line, so an unrelated negation earlier in the line (e.g. "No issues were
   skipped") blanket-suppressed a real, separate certainty claim later in the
   same line ("Label squad:kint was verified for #42").
2. False positive: a forbidden word describing an unrelated subject sharing a
   line with a label token ("its verified real number" describing a reused
   issue number, not the label operation) was incorrectly flagged.

Fix: split each line into clauses on clause/sentence-ending punctuation
(., ,, ;, :), protecting squad:{agent} tokens so their embedded colon is never
mistaken for a clause boundary. Label-operation context, the forbidden word,
and any negation must now all be found within the *same* clause before a
claim is flagged. This lets an unrelated negation in a different clause fail
to suppress a real claim, and lets a forbidden word in a clause that carries
no label-operation context correctly fall out of scope, without weakening the
existing quoted-title/table-row/code-fence/substring/negation guards or the
six forbidden standalone certainty claims (applied, received, landed,
verified, confirmed, checked).

Adds two permanent regression tests reproducing FIDO's exact reported
strings in test/gh-aw-activation-artifact-integrity.test.ts.

Testing:
- npx vitest run test/gh-aw-activation-artifact-integrity.test.ts — 90/90
  passed (88 previously + 2 new regression tests)
- npx vitest run test/check-agent-binding.test.ts
  test/gh-aw-activation-summary-outcomes.test.ts
  test/gh-aw-activation-capacity.test.ts test/gh-aw-quality.test.ts
  test/gh-aw-activate-roster-binding.test.ts
  test/gh-aw-agent-binding-correspondence.test.ts
  test/gh-aw-activation-artifact-integrity.test.ts — 377/377 passed
- npx vitest run (full suite) — only pre-existing, unrelated failures
  remain (externalized-state CLI tests), confirmed identical on the
  pre-revision commit
- npx eslint scripts/check-agent-binding.mjs
  test/gh-aw-activation-artifact-integrity.test.ts
  test/gh-aw-activation-capacity.test.ts — clean
- npm run build — succeeds; build-metadata/version-bump and skill-template
  CRLF sync side effects reverted before commit, not part of this diff

Scope: only scripts/check-agent-binding.mjs and
test/gh-aw-activation-artifact-integrity.test.ts touched, per FIDO's
required narrow revision.

Closes the FIDO REJECT on #1980.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
bradygaster added a commit that referenced this pull request Sep 2, 2026
main() filtered binding.issue/epic_issue with Number.isInteger, but
compliant activation artifacts write these as quoted "#42" strings per
the resolveIssueReference() contract. That produced an empty issues
list, skipped label fetching entirely, and made validateActivation()
fail with "labels could not be resolved" for otherwise-valid bindings.

Add extractIssueNumber(), a non-throwing counterpart to
resolveIssueReference() that also accepts the "#42" string form, and
use it when building the label-prefetch list in main().

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
bradygaster added a commit that referenced this pull request Sep 2, 2026
…t A) (#1980)

* fix(gh-aw): fast-path /squad activate artifact integrity (E4 preflight A)

Closes the gap where the recommended /squad activate fast path
(squad-plan-accept, artifacts plan-accepted/phases-accepted) created and
labeled issues identically to the granular /squad plan activate path but
was not covered by the Activation bindings: contract, the deterministic
checker, or the CI collector.

- workflows/squad.md: fast path Step 4 now requires the same non-empty
  Activation bindings: JSON block (shape/quoting/omission semantics) as
  squad-plan-activate. Renamed both paths' label-reporting heading to the
  identical "Label operations accepted" text. Reworded the "label set it
  should have received" trap phrase to drop the forbidden certainty word
  "received" while preserving meaning.
- workflows/shared/squad-planning-ontology.md: the bindings mapping is now
  documented as mandatory for phases-accepted/plan-accepted too, not just
  phases-activated/activated.
- scripts/check-agent-binding.mjs: ACTIVATION_ARTIFACTS now includes
  plan-accepted/phases-accepted so missing/empty bindings fail closed for
  fast-path artifacts exactly like granular ones. Added
  assertAcceptedOnlyLabelWording(), which rejects standalone certainty
  claims (applied, received, landed, verified, confirmed, checked) in
  label-operation reporting. It is scoped to lines that actually mention
  label vocabulary, strips fenced/inline code and quoted strings first,
  skips markdown table rows, and treats explicit negations as compliant --
  never a blanket whole-comment scan -- so quoted titles, unrelated
  sections, negations, and substrings (unverified) don't false-positive.
  Wired into main()'s per-comment loop.
- .github/workflows/squad-agent-binding-check.yml: the collector filter
  matched only /activated/i, which a plan-accepted/phases-accepted comment
  never contains, so fast-path artifacts were silently never passed to the
  checker. Now matches the squad_artifact field precisely for all four
  activation artifact types.
- test/gh-aw-activation-artifact-integrity.test.ts (new): heading parity,
  fast-path bindings-contract presence + mutation kills against committed
  source, checker/runtime parity across all four artifact types (missing
  and [] bindings), a full parseStructuredData+validateActivation pipeline
  test against realistic comment strings (including bindings-block
  deletion/emptying), parameterized forbidden-word rejection (6 words x
  case/punctuation), negative tests for quoted titles/table
  rows/unrelated sections/negations/substrings, and collector-regex
  parity/regression tests.
- test/gh-aw-activation-capacity.test.ts: updated the one existing
  assertion pinned to the reworded trap phrase.

Out of scope per the E4 preflight package A brief: workflow discriminators,
docs sequencing, draft PR UX, and all other E4 findings.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(gh-aw): scope negation/claim detection to clauses in label-wording check

FIDO rejected the first revision of #1980 with two reproduced defects in
assertAcceptedOnlyLabelWording (scripts/check-agent-binding.mjs):

1. False negative: NEGATION_NEARBY matched a negation anywhere on the whole
   line, so an unrelated negation earlier in the line (e.g. "No issues were
   skipped") blanket-suppressed a real, separate certainty claim later in the
   same line ("Label squad:kint was verified for #42").
2. False positive: a forbidden word describing an unrelated subject sharing a
   line with a label token ("its verified real number" describing a reused
   issue number, not the label operation) was incorrectly flagged.

Fix: split each line into clauses on clause/sentence-ending punctuation
(., ,, ;, :), protecting squad:{agent} tokens so their embedded colon is never
mistaken for a clause boundary. Label-operation context, the forbidden word,
and any negation must now all be found within the *same* clause before a
claim is flagged. This lets an unrelated negation in a different clause fail
to suppress a real claim, and lets a forbidden word in a clause that carries
no label-operation context correctly fall out of scope, without weakening the
existing quoted-title/table-row/code-fence/substring/negation guards or the
six forbidden standalone certainty claims (applied, received, landed,
verified, confirmed, checked).

Adds two permanent regression tests reproducing FIDO's exact reported
strings in test/gh-aw-activation-artifact-integrity.test.ts.

Testing:
- npx vitest run test/gh-aw-activation-artifact-integrity.test.ts — 90/90
  passed (88 previously + 2 new regression tests)
- npx vitest run test/check-agent-binding.test.ts
  test/gh-aw-activation-summary-outcomes.test.ts
  test/gh-aw-activation-capacity.test.ts test/gh-aw-quality.test.ts
  test/gh-aw-activate-roster-binding.test.ts
  test/gh-aw-agent-binding-correspondence.test.ts
  test/gh-aw-activation-artifact-integrity.test.ts — 377/377 passed
- npx vitest run (full suite) — only pre-existing, unrelated failures
  remain (externalized-state CLI tests), confirmed identical on the
  pre-revision commit
- npx eslint scripts/check-agent-binding.mjs
  test/gh-aw-activation-artifact-integrity.test.ts
  test/gh-aw-activation-capacity.test.ts — clean
- npm run build — succeeds; build-metadata/version-bump and skill-template
  CRLF sync side effects reverted before commit, not part of this diff

Scope: only scripts/check-agent-binding.mjs and
test/gh-aw-activation-artifact-integrity.test.ts touched, per FIDO's
required narrow revision.

Closes the FIDO REJECT on #1980.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(gh-aw): resolve quoted issue references before prefetching labels

main() filtered binding.issue/epic_issue with Number.isInteger, but
compliant activation artifacts write these as quoted "#42" strings per
the resolveIssueReference() contract. That produced an empty issues
list, skipped label fetching entirely, and made validateActivation()
fail with "labels could not be resolved" for otherwise-valid bindings.

Add extractIssueNumber(), a non-throwing counterpart to
resolveIssueReference() that also accepts the "#42" string form, and
use it when building the label-prefetch list in main().

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* test(gh-aw): cover quoted activation references

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant